Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要删除多个“-&引用;从使用tcl的字母数字字符串_Tcl_Itcl - Fatal编程技术网

需要删除多个“-&引用;从使用tcl的字母数字字符串

需要删除多个“-&引用;从使用tcl的字母数字字符串,tcl,itcl,Tcl,Itcl,我有这个字符串: svpts-7-40.0001 我需要去掉第二个“-”。 基本上,我获取的是这样的值,有时会带有双“-”。因此,如果看到这样的变量,那么我必须删除第二个“-”,并将其替换为“.”,因此字符串应该如下所示: svpts-7.40.0001 [编辑]我试过: % set list1 [split $string -] svpts 7 40.0001 % set var2 [join $list1 .] svpts.7.40.0001 % 试一试 上面的代码在第一个字符后每个

我有这个字符串:

svpts-7-40.0001
我需要去掉第二个“-”。 基本上,我获取的是这样的值,有时会带有双“-”。因此,如果看到这样的变量,那么我必须删除第二个“-”,并将其替换为“.”,因此字符串应该如下所示:

svpts-7.40.0001

[编辑]我试过:

% set list1 [split $string -]
svpts 7 40.0001
% set var2 [join $list1 .]
svpts.7.40.0001
%
试一试

上面的代码在第一个字符后每个连字符都会更改。要仅更改第二个连字符,可以执行以下操作:

set idx [string first - $data [string first - $data]+1]
set newdata [string replace $data $idx $idx .]
或者这个:

set idxs [lindex [regexp -inline -all -indices -- - $data] 1]
set newdata [string replace $data {*}$idxs .]
如果数据字符串不包含至少两个连字符,则第一个代码段表现良好;另一个需要某种检查以避免抛出错误

文件: , , , , ,

Tcl索引表达式的语法:

  • 基于零的整数索引数
  • end
    最后一个元素
  • end
    -N最后一个元素之前的第N个元素
  • end
    +N最后一个元素后的第N个元素(实际上,N应该是负数)
  • M-N元素M之前的第N个元素
  • M+N元素M之后的第N个元素

表达式中不能有空格。

这里有一个只会更改第二个连字符的正则表达式:

% regsub -expanded {( .*? - .*? ) -} "svpts-7-40.0001" {\1.}
svpts-7.40.0001

% regsub -expanded {( .*? - .*? ) -} "svpts-7_40.0001" {\1.}
svpts-7_40.0001

% regsub -expanded {( .*? - .*? ) -} "svpts-7-40.0001-a-b-c" {\1.}
svpts-7.40.0001-a-b-c

已尝试拆分和联接:%set-list1[split$string-]svpts 7 40.0001%set-var2[join$list1.]svpts.7.40.0001%,但基于的联接。对于所有项目,它必须只发生在第二个连字符(-)@Jolta“需要删除多个”-”——这是否意味着可能存在需要删除多个连字符的情况?这有助于实现最优化、最昂贵的操作,但仍然获得了良好的输出,感谢glenn
% regsub -expanded {( .*? - .*? ) -} "svpts-7-40.0001" {\1.}
svpts-7.40.0001

% regsub -expanded {( .*? - .*? ) -} "svpts-7_40.0001" {\1.}
svpts-7_40.0001

% regsub -expanded {( .*? - .*? ) -} "svpts-7-40.0001-a-b-c" {\1.}
svpts-7.40.0001-a-b-c