簡體   English   中英

TCL,替換文本文件中的字符串

[英]TCL, replacing strings in a textfile

可以說我打開了一個文件,然后將其解析為幾行。 然后我使用一個循環:

foreach line $lines {}

例如,如果文件包含以下字符串:

XYDATA, NAME1

我想提出ACC_XYDATA得到ACC_NAME1 ,如果文件中包含一個以上的字符串XYDATA ,把VEL_DSP_Prs_

使用tcllibtextutil::split包,以及讓foreach同時迭代多個列表的功能

package require textutil::split

set line {XYDATA, foo, bar, baz, qux}
set prefixes {ACC_ VEL_ DSP_ Prs_}

set fields [textutil::split::splitx $line {, }]
set new [list]

if {[lindex $fields 0] eq "XYDATA"} {
    lappend new [lindex $fields 0]
    foreach prefix $prefixes field [lrange $fields 1 end] {
        lappend new $prefix$field
    }
}
puts [join $new ", "]
XYDATA, ACC_foo, VEL_bar, DSP_baz, Prs_qux

或者,使用單個regsub調用生成一些代碼

set code [regsub -all {(, )([^,]+)} $line {\1[lindex $prefixes [incr counter]]\2}]
set counter -1
puts [subst $code]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM