Pun*_*tal 1 string tcl string-concatenation
我需要在tcl中连接两个字符串,然后修改连接字符串,如果有任何不需要的字符,如'_'.字符串存储在tcl变量中,我面临的问题是我需要连接这两个字符串"$str1_$str2".基本上将两个字符串连接'_'在它们之间.我找到了如下方法.
set str1 "mystring1"; #string 1
set str2 "mystring2"; #string 2. This string could be Empty String as well.
set outString [append outString "_" $str2];
set outString [string trimright '_'];
Run Code Online (Sandbox Code Playgroud)
这给了我outString的值如下:
puts $outString;
mystring1_mystring2 #if $str2 is not empty
mystring1 #if $str2 is empty.
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种更优化的方式来完成我的任务.我试着简单地加入两个字符串
set outString "$str1_$str2"
Run Code Online (Sandbox Code Playgroud)
但我得到的错误是"没有像$ str1_这样的变量",因为'_'下划线可以是变量名的一部分.
任何建议,将不胜感激.
将变量插入到字符串中时,可以使用花括号来保护变量名称.
set str1 "mystring1";
set str2 "mystring2";
set outString "${str1}_${str2}"
Run Code Online (Sandbox Code Playgroud)
(相同的语法适用于shell脚本,Perl以及其他脚本语言.)
但我不会指望这种"更优化"的呼唤append.它更容易阅读,恕我直言这是一个很好的理由这样做,但不要认为它更快,直到你测量它.
参考:http://www.tcl-lang.org/man/tcl8.6/TclCmd/Tcl.htm#M12