我有像NYMEX UTBPI这样的字符串。在这里,我想获取NYMEX和UTBPI中间的空格索引,然后从该索引到最后一个索引,我想切除子字符串。在本例中,我的子字符串将是下面使用的UTBPI
set part1 [substr $line [string index $line " "] [string index $line end-1]]我得到了低于错误。
wrong # args: should be "string index string charIndex"
while executing
"string index $line "
("foreach" body line 2)
invoked from within
"foreach line $pollerName {
set part1 [substr $line [string index $line ] [string index $line end-1]]
puts $part1
puts $line
}"
(file "Config.tcl" line 9)你能告诉我怎样才能做一些其他的字符串操作吗?这方面的任何好的链接。
发布于 2013-04-10 19:04:59
我只需使用string range并将空格的索引传递给它(您可以使用、string、或其他方法找到空格)。
% set s "NYMEX UTBPI"
NYMEX UTBPI
% string range $s 6 end
UTBPI或者使用string first动态查找空格:
% set output [string range $s [expr {[string first " " $s] + 1}] end]
UTBPI发布于 2013-04-11 08:22:41
如果处理器时间不是问题,那就把它分成一个列表,然后取第二个元素:
set part1 [lindex [split $line] 1]如果字符串可以具有任意数量的单词,
set new [join [lrange [split $line] 1 end]]但是,我会使用Donal的建议,并坚持使用string操作。
发布于 2013-04-11 02:24:56
我认为,在Tcl中做到这一点的最佳方法是:
set s "NYMEX UTBPI"
regexp -indices " " $s index;
puts [lindex $index 0]变量index将包含匹配模式的第一个和最后一个索引。在这里,由于您正在寻找单个字符,因此第一个和最后一个字符将是相同的,因此您可以使用
puts [lindex $index 0]或
puts [lindex $index 1]欲了解更多信息,请访问官方文档:http://www.tcl.tk/man/tcl8.5/TclCmd/regexp.htm#M7
https://stackoverflow.com/questions/15923728
复制相似问题