有人能帮我把单词之间的空格调整为"_“(TCL)吗?
原行:
CTS__94331/I (DCCKBD8BWP240H11P57PDULVT) 0.025 0.002 & 0.352 r要求线:
CTS__94331/I_(DCCKBD8BWP240H11P57PDULVT) 0.025 0.002_& 0.352_r我尝试了下面的方法,但是每个空格都被替换为"“,我只想用一个空格替换为"”。
regsub -all {\s{1}} $a _发布于 2020-06-18 08:43:41
您需要在正则表达式中更狡猾,并使用不同的替换。
regsub -all {(\S)\s(?=\S)} $a {\1_}正则表达式匹配(并捕获)一个非空格和一个空格,然后要求下一个字符是一个不匹配的非空格。这将被您匹配的第一个字符(用它本身替换)和下划线替换。
通常,对于这种情况,您会使用\y\s\y→_,但这在用例中不起作用,因为它不能正确地处理0.002 & (&不是单词字符)。
如果Tcl的RE引擎支持查找约束(它不支持),这将更容易解决,因为您不需要在空间之前用自己替换字符的诡计。
发布于 2020-06-18 07:21:26
将单词之间的空格调整为"_“
在这种情况下,您可以考虑string map
% string map {" " "_"} {CTS__94331/I (DCCKBD8BWP240H11P57PDULVT)}
CTS__94331/I_(DCCKBD8BWP240H11P57PDULVT)但是,您的示例数据不一致,而且我没有看到要替换多个空白的示例?
https://stackoverflow.com/questions/62443761
复制相似问题