【问题标题】:TCL string prependTCL 字符串前置
【发布时间】:2012-04-04 10:19:12
【问题描述】:

只是一个简单但经常需要的操作——如何将字符串添加到变量中:

set s "world!!!"
prepend s "Hello " #how to accomplish this effectively?
puts $s
#should print "Hello world!!!"

【问题讨论】:

    标签: string tcl prepend


    【解决方案1】:

    你可以写一个过程prepend:

    proc prepend {s_var txt} {
      upvar 1 $s_var s
      set s "${txt}${s}"
    }
    

    这正是你想要的。但我认为通常写起来更简单:

    set s "Hello ${s}"
    

    【讨论】:

    • {set s "Hello $s"} 这是TCL最有效的方法吗?
    • 不错的答案。你在你的 proc 中有它,但在第二个例子中也可能值得在 s 周围环绕卷曲。设置 s "你好 ${s}"
    • @Brian:我添加了花括号,尽管对于 this 使用它并没有什么不同。
    • @Narek:至少我不知道更有效的方法。但无论如何:它比例如慢得多。 append.
    【解决方案2】:

    我用TCL已经有一段时间了,但是你有没有试过这个:

    set s "world!"
    set s "hello $s"
    puts $s
    

    【讨论】:

    • 同样的问题:{set s "Hello $s"}这是TCL中最有效的方式吗?
    • 有效是什么意思?
    • 我的意思是 TCL 中最快的方法可用于此操作。
    • @Narek,您需要从需要预先添加的块中组装一个长字符串,并且您不知道会有多少块,最好保留这些块的列表(您可以lappend 对其进行分块),然后当列表准备好时,使用append 按您需要的顺序从列表中获取块来组装一个字符串。
    • @Narek:如果你想知道最有效的技术是什么,你的意思是什么是最快的方法(当然不是“有效”的唯一定义)然后学习使用time 命令。
    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多