我试图在tcl中添加两个字符串。我是从csv读取并将值设置为变量然后我将使用它来为我的应用程序分配它。我试过下面的一个。
set vMyvalue [lindex $lsLine 17]
append vMyvalue " [lindex $lsLine 18]"
它给了我预期的结果。例如,如果我在csv中的第17和第18位置具有 250 和 km 的值。我正在
250 km
但问题是当17和18中没有值时我的意思是它是空的,那个时候它也是添加空间。但我的应用程序不允许我为该值分配空间。我该如何解决这个问题?我刚开始在TCL工作。我不知道很多功能。
答案 0 :(得分:1)
有几种方法可以做到这一点。您已经拥有的代码的最小修改可能是修改结果。修剪删除前导和尾随空格,但如果它只有空格,则会将其修剪为空字符串。所以:
set myValue [string trim $myValue]
答案 1 :(得分:1)
如果您不知道执行此操作的函数,我认为处理与此类似的案例的最直观方式(例如,如果您正在连接具有某些字符的两个字符串,但是如果其中任何一个字符为空字符串,然后你想要做不同的事情),将使用if
。在这种情况下:
if {$vMyvalue eq " "} {set vMyvalue ""}
如果您希望缩短代码,可以使用lrange
(列表范围),join
和string
函数:
set vMyvalue [string trim [join [lrange $lsLine 17 18] " "]]
lrange
返回列表$lsLine
中的索引17到18之间的元素列表,然后join
逐字地将这些元素与空格连接,最后string trim
清除任何前导和尾随空格(如果它是字符串中唯一的字符,则完全删除空格)。