检查字符串是否以TCL中的某个字符开头的最有效方法是什么?

时间:2012-07-29 00:49:48

标签: string performance comparison tcl

我有一个字符串,我想检查它是否以某个字符开头(在这种情况下为#)。我想知道最有效的方法!

我在想的是if {[string compare -length 1 $string "#"]},因为它可能使用strcmp(),这可能是实现这一目标的最快方法之一。

我认为也可能是if {[string index $string 1] == "#"},因为它可能会* string =='#',这可能也会非常快。

您怎么看?

2 个答案:

答案 0 :(得分:15)

检查字符串是否以特定字符开头的最快方法是string match

if {[string match "#*" $string]} { ... }

进行匹配的代码会看到第一个字符后面有一个星号,然后是字符串的结尾,因此停止检查$string的其余部分。它也不需要任何结果分配(除布尔值之外,这是一种特殊情况,因为string match也是字节码编译的)。

答案 1 :(得分:0)

是[string match“*”$ string_name]这对我有用。与regexp或任何其他实用程序相比,这非常快。