如何检查tcl中的变量是否为空

如何检查tcl中的变量是否为空,tcl,Tcl,如果一个变量是空的,你怎么做?它可以包含“\n”或空格。 我现在正在做这个 if {{string trimleft $var} != ""} { # the variable is not empty puts $var } 但是,打印的变量似乎仍然是空的?是否将trimleeft删除“\n”? 有没有更好的方法来检查字符串是否为空?据我所知,检查字符串是否为空只需通过以下方式完成: if {$myString eq ""} { puts "string is emp

如果一个变量是空的,你怎么做?它可以包含
“\n”
或空格。 我现在正在做这个

if {{string trimleft $var} != ""} {
   # the variable is not empty
   puts $var
 }
但是,打印的变量似乎仍然是空的?是否将
trimleeft
删除
“\n”

有没有更好的方法来检查字符串是否为空?

据我所知,检查字符串是否为空只需通过以下方式完成:

if {$myString eq ""} {

    puts "string is empty"

}
运行以下命令不应打印任何内容:

if {" " eq ""} {
    puts "1"
} elseif {"\n" eq ""} {
    puts "2"
}
我希望我正确理解了你的问题

if {{string trimleft "\n"} eq ""} {
    puts "1"
} elseif {"\n" eq ""} {
    puts "2"
}
  • 上面的脚本将输出为nothing
  • 我认为
    trimlefit
    不会从值中删除
    \n

要回答原始问题并注意检查是否有空行,下面是更正的代码示例:

if {[string trim $var] != ""} {
    puts $var
}

没有指定字符?修剪将删除被视为空格、制表符、换行符和回车符的空白字符。

您编写了
{string trimleet$var}
,但您可能应该编写
[string trimleet$var]
。括号中的差异是Tcl的根本;卷曲是引号,正方形是脚本替换。请参阅
trimleet
将删除
\n
,但必须使用方括号,以便实际调用
string trimleet