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

Raj*_*war 5 tcl

如果变量是空的,你怎么看?它可以包含一个"\n"或多个空格.我目前正在这样做

if {{string trimleft $var} != ""} {
   # the variable is not empty
   puts $var
 }
Run Code Online (Sandbox Code Playgroud)

然而印刷的变量似乎仍然是空的?会trimleft删除"\n"吗?有没有更好的方法来检查字符串是否为空?

小智 8

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

if {$myString eq ""} {

    puts "string is empty"

}
Run Code Online (Sandbox Code Playgroud)

运行以下内容不应该打印任何内容:

if {" " eq ""} {
    puts "1"
} elseif {"\n" eq ""} {
    puts "2"
}
Run Code Online (Sandbox Code Playgroud)

我希望我能正确理解你的问题


小智 5

为了回答最初的问题并考虑检查空行,这里是更正的代码示例:

if {[string trim $var] != ""} {
    puts $var
}
Run Code Online (Sandbox Code Playgroud)

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


小智 1

if {{string trimleft "\n"} eq ""} {
    puts "1"
} elseif {"\n" eq ""} {
    puts "2"
}
Run Code Online (Sandbox Code Playgroud)
  • 上面的脚本将不会给出任何输出。
  • 我认为trimleft不会\n从价值中删除。