gpt4 book ai didi

tcl - 如何处理TCL中的lindex和反斜杠?

转载 作者:行者123 更新时间:2023-12-05 00:17:39 24 4
gpt4 key购买 nike

我有一堆数据正在通过 Tcl 解析,但是在字符串上使用 lindex 时遇到问题,因为它包含反斜杠。

例如,

$data is a list split by lines, 
{123 somethinghere/somethingthere/\idontcare 123ff}
{456 apples/oranges/\bananas 921}
{999 pikachu/ratata/\snorlax ftp}

我循环 $data 并使用 lindex 拆分此数据并根据其类型对其进行分组:
foreach item $data {
set num [lindex $item 0]
set paths [lindex $item 1]
set output [lindex $item 2]
}

不幸的是,反斜杠转义了我想要的文本。
puts "$paths"
somethinghere/somethingthere/dontcare

理想情况下,我什至不想保留反斜杠。我在 $path 上的首选数据是:
puts "$paths"
somethinghere/somethingthere/idontcare

建议?我不想使用正则表达式,除非这是唯一的方法。

最佳答案

列表的第一条规则是:不要将非列表事物视为列表 (好吧,这有异常(exception),但您的数据是一个很好的例子,为什么您应该在 99% 的情况下遵循规则)。

要将字符串正确转换为列表,请使用 split :

set i [split $item " "]

如果拆分字符是可变的或多个字符,请使用 regexp :
set i [regexp -inline -all {\S+} $item]

通过使用返回列表的命令,您可以保证获得正确的列表。除非您 100% 确定(异常(exception))字符串并不总是可解析为列表。

现在,至于如何摆脱 \ .您当然可以为此使用正则表达式:
set item [regsub -all {\\} $item]

但是有一个更好的方法可以不使用正则表达式(我相信你会喜欢),使用 string map :
set item [string map {"\\" ""} $item]

关于tcl - 如何处理TCL中的lindex和反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39606107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com