0

我对 TCL 中的字符串有疑问:

HANDLE_NAME "/group1/team1/RON"

proc HANDLE_NAME {playerName} {
    #do something here
}

我们将字符串“/group1/team1/RON”传递给proc,但是在HANDLE_NAME内部的某个地方,我们只需要最后一部分“RON”,如何操作输入字符串并获取输入的最后一部分(只有RON)并将其设置为变量?

谁能帮忙?

4

4 回答 4

3
proc HANDLE_NAME {playerName} {
    set lastPart [lindex [split $playerName "/"] end]
    # ...
}
于 2012-06-21T18:24:37.287 回答
2

并添加第四个答案,如果字符串实际上是文件的路径,请使用file

set filename [file tail $playerName]
于 2012-06-27T10:55:37.380 回答
1

使用字符串 last 查找最后一个正斜杠。然后使用字符串范围获取之后的文本。 http://tcl.tk/man/tcl8.5/TclCmd/string.htm

set mystring "/group1/team1/RON"
set slash_pos [string last "/" $mystring]
set ron_start_pos [incr slash_pos]
set ron [string range $mystring $ron_start_pos end]
于 2012-06-21T18:26:36.863 回答
1

要添加第三个答案,您也可以regexp在字符串末尾使用锚定。

regexp {/([^/]+)$} $playerName -> lastPart

但是如果您使用的字符串类似于文件路径,那么 acheong87 的 lindex/split 解决方案肯定是更自然的方式。

于 2012-06-24T14:19:41.283 回答