regsub和字符串修剪工作几乎相同?

时间:2014-12-09 10:55:40

标签: string tcl

我已使用regsubstring trim两个命令删除空格和所需字符。

到目前为止,两者都可以用于同样的任务......(差不多以一种或另一种方式与我合作)

使用上述语法时是否有任何重要或值得注意的观点?

对于任何特定的例子,是否有人使用一个而不是其他的任何主要好处。

2 个答案:

答案 0 :(得分:2)

虽然regsub可以执行string trim所做的事情,但它对regsub的力量几乎没有很好的利用。另一方面,string trim是一个简单的命令,可以完成它所做的工作而且就是这样做的。因此string trim的一个好处是,如果您想要它所做的事情更容易使用regsub的一个好处就是它可以做得非常复杂的东西。

因为它更简单,string trim更快。

% set s "      example text      "
      example text      
% puts >>[string trim $s]<<
>>example text<<
% puts >>[regsub {^\s*(\S(?:.*\S)?)\s*$} $s {\1}]<<
>>example text<<
% time {string trim $s} 10000
0.662736 microseconds per iteration
% time {regsub {^\s*(\S(?:.*\S)?)\s*$} $s {\1}} 10000
2.6273805 microseconds per iteration

时间不科学且无效;只是比较相对速度,好吗?并且string trimregsub快4倍(这是模拟string trim所做的正确的...)

答案 1 :(得分:2)

首先string trim仅意味着只删除前导和尾随字符。如果假设,该字符位于中间位置或位于前导位置或尾随位置之外,则string trim将使其保持原状。你也不能在这里使用正则表达式。 regsub的许多优点。

此外,string trim会将其删除为字符列表。不是单个整个字符串。