TCL以合理的开销获取字符串中当前元素的索引

时间:2017-06-01 09:21:43

标签: string tcl

我已将文件读入字符串并按换行符分隔元素

if {[file exists $inputFile] == 1} {
    set fpI [open $inputFile r]
    set input [read $fpI]
    set lines [split $input "\n"]
    close $fpI
} else {
    return "File does not exsist"
}

现在我想逐行检查整个文件,当我得到某些条件的匹配时,我想存储行#,实际上是$ lines字符串中的元素号。如何在不使用其他变量的情况下获取行号,并且每次都不运行搜索(高开销)?

2 个答案:

答案 0 :(得分:0)

  set fp [open inputfile r]
 while {[gets $ fp line]!=  -  1} {
 incr line_num
 if {$ line eq“SOMETEXT”} {
打破
 }
}
关闭$ fp
将“line_num:$ line_num”
  



答案 1 :(得分:0)

到目前为止,最简单的机制是保持自己的行计数器。虽然foreach确实有一个内部索引计数器,但它根本不会暴露给脚本。

set lineNumber 0
foreach line $lines {
    incr lineNumber
    # ...
}