在等号后删除部分字符串

时间:2018-06-04 18:06:01

标签: tcl

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

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

所以想法是将字符串的结尾剪掉,直到第一个等号。  我正在尝试修剪但没有好结果的可能性。

3 个答案:

答案 0 :(得分:0)

你可以找到最后一个=的索引,并取出那里结束的子串:

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

答案 1 :(得分:0)

你最好的选择可能是

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]

实际上可以用于这个确切的例子(我对字符进行了加扰,强调修剪不是按字符串而是按字符切割)。

答案 2 :(得分:0)

你也可以使用普通的regsub:

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