删除 Tcl 中字符串中的第二个单词

Removing the second word in a string in Tcl

提问人:notatclgenius 提问时间:11/8/2023 最后编辑:mrcalvinnotatclgenius 更新时间:11/10/2023 访问量:49

问:

假设我有一个字符串 wordone wordtwo wordthree。我不知道 wordtwo 会是什么,但只要它存在,就需要将其删除。我能做些什么来删除它。

我尝试使用 lreplace $string 1 1 “” 但收到错误“ 大括号中的列表元素,后跟......而不是空间”

字符串 TCL

评论

0赞 Samuel 11/8/2023
你的源字符串是什么?这个错误听起来像是它没有干净地解析到列表中。
1赞 Colin Macleod 11/8/2023
在执行之前,先在输入上使用更安全,以确保您有一个格式正确的列表。splitlreplace

答:

0赞 TrojanName 11/8/2023 #1

如果你把你的字符串看作一个列表,你可以用 lreplace 来删除第二个单词,例如

set input_string "wordone wordtwo wordthree"
set result [lreplace $input_string 1 1]

输出:

wordone wordthree

仔细想想,最好使用 regsub 来匹配空格,并提取第二个单词。这应该有效:

    set input_string "wordone wordtwo wordthree"
    regsub {^(\S+)\s+\S+} $input_string {\1} result
    puts $result ;# wordone wordthree

评论

1赞 Donal Fellows 11/9/2023
我喜欢 ,但是放在括号中 之前也可以使用它与前导空格一起使用。regsub\s*\S+