如何在TCL中追加两个字符串,它们之间有空格?

时间:2015-10-01 06:29:14

标签: tcl

我试图在tcl中添加两个字符串。我是从csv读取并将值设置为变量然后我将使用它来为我的应用程序分配它。我试过下面的一个。

set vMyvalue [lindex $lsLine 17]
append vMyvalue " [lindex $lsLine 18]"
它给了我预期的结果。例如,如果我在csv中的第17和第18位置具有 250 km 的值。我正在

250 km

但问题是当17和18中没有值时我的意思是它是空的,那个时候它也是添加空间。但我的应用程序不允许我为该值分配空间。我该如何解决这个问题?我刚开始在TCL工作。我不知道很多功能。

2 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。您已经拥有的代码的最小修改可能是修改结果。修剪删除前导和尾随空格,但如果它只有空格,则会将其修剪为空字符串。所以:

set myValue [string trim $myValue]

答案 1 :(得分:1)

如果您不知道执行此操作的函数,我认为处理与此类似的案例的最直观方式(例如,如果您正在连接具有某些字符的两个字符串,但是如果其中任何一个字符为空字符串,然后你想要做不同的事情),将使用if。在这种情况下:

if {$vMyvalue eq " "} {set vMyvalue ""}

如果您希望缩短代码,可以使用lrange(列表范围),joinstring函数:

set vMyvalue [string trim [join [lrange $lsLine 17 18] " "]]

lrange返回列表$lsLine中的索引17到18之间的元素列表,然后join逐字地将这些元素与空格连接,最后string trim清除任何前导和尾随空格(如果它是字符串中唯一的字符,则完全删除空格)。