首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在tcl中从字符串中切除子字符串

如何在tcl中从字符串中切除子字符串
EN

Stack Overflow用户
提问于 2013-04-10 18:48:42
回答 3查看 43.6K关注 0票数 9

我有像NYMEX UTBPI这样的字符串。在这里,我想获取NYMEX和UTBPI中间的空格索引,然后从该索引到最后一个索引,我想切除子字符串。在本例中,我的子字符串将是下面使用的UTBPI

代码语言:javascript
复制
set part1 [substr $line [string index  $line " "] [string index  $line end-1]]

我得到了低于错误。

代码语言:javascript
复制
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)

你能告诉我怎样才能做一些其他的字符串操作吗?这方面的任何好的链接。

EN

回答 3

Stack Overflow用户

发布于 2013-04-10 19:04:59

我只需使用string range并将空格的索引传递给它(您可以使用、string、或其他方法找到空格)。

代码语言:javascript
复制
% set s "NYMEX UTBPI"
NYMEX UTBPI
% string range $s 6 end
UTBPI

或者使用string first动态查找空格:

代码语言:javascript
复制
% set output [string range $s [expr {[string first " " $s] + 1}] end]
UTBPI
票数 7
EN

Stack Overflow用户

发布于 2013-04-11 08:22:41

如果处理器时间不是问题,那就把它分成一个列表,然后取第二个元素:

代码语言:javascript
复制
set part1 [lindex [split $line] 1]

如果字符串可以具有任意数量的单词,

代码语言:javascript
复制
set new [join [lrange [split $line] 1 end]]

但是,我会使用Donal的建议,并坚持使用string操作。

票数 5
EN

Stack Overflow用户

发布于 2013-04-11 02:24:56

我认为,在Tcl中做到这一点的最佳方法是:

代码语言:javascript
复制
set s "NYMEX UTBPI"
regexp -indices " " $s index;
puts [lindex $index 0]

变量index将包含匹配模式的第一个和最后一个索引。在这里,由于您正在寻找单个字符,因此第一个和最后一个字符将是相同的,因此您可以使用

代码语言:javascript
复制
puts [lindex $index 0]

代码语言:javascript
复制
puts [lindex $index 1]

欲了解更多信息,请访问官方文档:http://www.tcl.tk/man/tcl8.5/TclCmd/regexp.htm#M7

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15923728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档