【问题标题】:TCL replace ^ in stringTCL 替换字符串中的 ^
【发布时间】:2017-09-04 11:49:47
【问题描述】:

我正在尝试从 TCL 中的字符串中删除不需要的字符。

我的字符串包含一个克拉符号 (^),我需要去掉它。

但是,我怀疑 ^ 可能需要以不同方式处理(可能转义?),因为当我使用 STRING FIRST 搜索时,我得到“-1”的输出(即错误/不存在)。

我知道我在做正确的事情,因为如果我在另一个字符上执行 STRING FIRST,我会得到预期的位置作为输出。

STRING: "<^abs"
Intended output: "<abs"
set pos [string first "^" $STRING]
set replaced_string [string replace $STRING $pos $pos ""]
puts $replaced_string

该问题具体与上述代码的第一行有关。如前所述,即使 ^ 存在,$pos 的输出也是 -1

【问题讨论】:

  • 这是我所期望的,但我正在使用的应用程序是,它使用 TCL 作为脚本语言是什么给了我上面描述的结果。谢谢你的帮助。回到绘图板
  • 那么您没有提供足够的有关该问题的数据。你在什么应用中使用它?
  • 为此道歉,我没有意识到应用程序在将我的字符串中继到 TCL 脚本之前会以不同的方式处理事情。我从内部运行的应用程序是 Cloverleaf Integration Suite,如下详述我自己的答案。

标签: string search replace tcl


【解决方案1】:

将您的 STRING 视为“&lt;^abs”,您的代码运行良好并可以替换。 或者你可以做

set replaced_string [string map {"^" ""} $STRING]

【讨论】:

  • string map 正是我要做的。
  • OP:请注意,string map 替换了字符串的 所有 次出现,而不仅仅是第一次出现。如果只替换第一个,string replaceregsub 更好。
【解决方案2】:

看来我正在尝试做的事情,严格来说在纯 TCL 中是正确的。

这不起作用的原因是我正在使用的应用程序(Cloverleaf Integration Suite by Infor) - 它使用 TCL 作为脚本语言 - 在将字符串解析为之前执行它自己的“处理”我的 TCL 脚本。

感谢您提供的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2014-01-30
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    相关资源
    最近更新 更多