我对TCL中的字符串有疑问:
HANDLE_NAME "/group1/team1/RON"
proc HANDLE_NAME {playerName} {
#do something here
}
我们将字符串“/ group1 / team1 / RON”传递给proc,但是在HANDLE_NAME内部的某个地方,我们只需要最后一部分是“RON”,如何操作输入字符串并获取最后一部分输入(仅RON)并将其设置为变量?
任何人都可以帮忙吗?
答案 0 :(得分:3)
proc HANDLE_NAME {playerName} {
set lastPart [lindex [split $playerName "/"] end]
# ...
}
答案 1 :(得分:2)
要添加第四个答案,如果字符串实际上是文件的路径,请使用file
:
set filename [file tail $playerName]
答案 2 :(得分:1)
使用string 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]
答案 3 :(得分:1)
要添加第三个答案,您也可以使用锚定在字符串末尾的regexp
。
regexp {/([^/]+)$} $playerName -> lastPart
但是如果你使用的字符串就像文件路径一样,acheong87的lindex / split解决方案肯定是更自然的方式。