【问题标题】:Concatenating two strings in tcl在 tcl 中连接两个字符串
【发布时间】:2016-09-13 19:11:11
【问题描述】:

如果有像'_' 这样的不需要的字符,我需要在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 '_'];

这给了我 outString 的值如下:

    puts $outString;  
    mystring1_mystring2    #if $str2 is not empty
    mystring1              #if $str2 is empty. 

我正在寻找一种更优化的方式来完成我的任务。我试图简单地加入两个字符串,如

    set outString "$str1_$str2"

但我得到的错误是“没有 $str1_ 这样的变量”,因为 '_' 下划线可以是变量名的一部分。

任何建议将不胜感激。

【问题讨论】:

    标签: string tcl string-concatenation


    【解决方案1】:

    在将变量插入字符串时,可以使用花括号来保护变量名。

    set str1 "mystring1";
    set str2 "mystring2";
    set outString "${str1}_${str2}"
    

    (相同的语法适用于 shell 脚本、Perl 以及可能的其他脚本语言。)

    但我不会指望这比调用append 更“优化”。它更容易阅读,恕我直言,这是这样做的充分理由,但在您测量之前不要假设它会更快。

    参考:http://www.tcl-lang.org/man/tcl8.6/TclCmd/Tcl.htm#M12

    【讨论】:

    • 哪个,大括号?那是Tcl(n)
    猜你喜欢
    • 2011-08-19
    • 2013-11-05
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2011-08-29
    • 2020-08-19
    相关资源
    最近更新 更多