在 Tcl 中,空格等于空字符串吗?
我使用 switch 语句来匹配一些可能有或没有与之关联的值的选项,然后提取这些值(我想这些值可能什么都没有或只是一堆空字符串)。
在Tcl中这些是等价的吗?即尾随空白将作为选项提供还是被解析掉?我应该“字符串修剪”该值还是没有必要?
**
I am using the switch statement to match some options which may or may not have VALUES associated with them, then extracting the values (which I imagine could be nothing or just a bunch of empty strings).
In Tcl are these equivalent? I.e. will trailing white space be fed as an option or parsed out? Should I "string trim" the value or is this unnecessary?
**
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
默认情况下,不会删除任何字符串开头或结尾的空格。毕竟,它有时可能很重要。如果您确实想要删除前导空格和尾随空格,请使用:
您可以分别使用
stringrimleft
和stringtrimright
删除前导空格或尾随空格。By default, whitespace is not trimmed from the start or end of any strings. After all, it can sometimes be significant. If you do want to strip the leading and trailing whitespace, use:
You can just strip the leading space or trailing space by using
string trimleft
andstring trimright
respectively.空格不等于空字符串。使用 TCL 8.5.2,表达式
expr {"" eq " "}
的计算结果为0
。如果您按原样接受字符串并且不对它们执行任何处理,那么您将得到存在的任何空白。
这个问题的答案取决于您的应用程序。如果空白不重要,请使用
strimrim
命令将其修剪掉(正如Donal Fellows提到的)。这样做可能会简化您的逻辑。您还可以使用 regsub -all {\s+} $input_string { } 折叠字符串内所有重复的空白字符。Whitespace is not equal to an empty string. Using TCL 8.5.2, the expression
expr {"" eq " "}
evaluates to0
.If you are accepting the strings as-is and performing no processing on them, then you will get any whitespace that is present.
The answer to this depends on your application. If the whitespace is not significant, trim it away using the
strim trim
command (as Donal Fellows mentioned). Doing so will likely simplify your logic. You can also useregsub -all {\s+} $input_string { }
to collapse all repeated whitespace characters inside of a string.