Tcl 删除等号后的字符串部分

Tcl 删除等号后的字符串部分,tcl,Tcl,我想请求有关删除部分字符串的帮助。 输入字符串:var1=dog,var2=home 我希望得到的结果是: 输出字符串:var1=dog,var2= 所以,我们的想法是把绳子的末端切到第一个等号。 我尝试了一些可能性,比如trim,但没有很好的结果。您可以找到最后一个=的索引,并获取结束于此的子字符串: set str "var1=dog,var2=home" set new [string range $str 0 [string last = $str]] puts $new 你最好的选择

我想请求有关删除部分字符串的帮助。
输入字符串:
var1=dog,var2=home

我希望得到的结果是:
输出字符串:
var1=dog,var2=

所以,我们的想法是把绳子的末端切到第一个等号。
我尝试了一些可能性,比如trim,但没有很好的结果。

您可以找到最后一个
=
的索引,并获取结束于此的子字符串:

set str "var1=dog,var2=home"
set new [string range $str 0 [string last = $str]]
puts $new

你最好的选择可能是

set input var1=dog,var2=home
regexp {.*=} $input output
也就是说,匹配以等号结尾的最长前缀字符序列,并将其存储在变量
output

另一种方式:

set output [string range $input 0 [string last = $input]]
获取
$input
中从字符串中的第一个字符到(包括)最后一个等号的所有字符

set output [string trimright $input ehmo]

实际上,它适用于这个确切的示例(我对字符进行了置乱,以强调trim不是按字符串而是按字符进行剪切)。

您也可以使用普通regsub:

set x "var1=dog,var2=home"
regsub -all {\=[a-z]+$} $x "=" x
puts $x

请在下次发布您的尝试。你可以参考
set x "var1=dog,var2=home"
regsub -all {\=[a-z]+$} $x "=" x
puts $x