Trim Tcl 字符串意外行为

Trim Tcl String unexpected behaviour

我目前在使用 TCL 时遇到意外行为。 我有一个像 "alternate [a-z]" 这样的字符串,我正在使用以下命令来获取我的备用索引。

set stemp [ string trim $test "alternate \s"]

[b-z] 的输出是 "alternate a" 的 [b-z] 但是我得到“ ”。为什么?

您看到的行为与记录的完全一致。该命令的工作原理是从每一端剪掉第二个参数中某处出现的任何连续字符序列。无论第二个参数中的字符串是什么,它都只是用作一组字符,从本质上讲,与第一个参数的前导或尾随子字符串不匹配。

例如

string trim foobar afro
# -> b

它可能是您想要的 ::textutil::trim:该命令根据正则表达式进行修剪。

package require textutil

::textutil::trim foooofoooofoo foo
# -> oofoooo
::textutil::trim faouofeoiofyo f.o
# -> uofeoio

文档:package, string, textutil