8

文字列があり、特定の文字(この場合は#)で始まっているかどうかを確認したいと思います。これを行う最も効率的な方法を知りたいです!

私が考えているのはif {[string compare -length 1 $string "#"]}、これを達成するための最速の方法の1つであるstrcmp()を使用する可能性があるためです。

if {[string index $string 1] == "#"}* string =='#'を実行する可能性があるため、これも可能だと思います。これもおそらく非常に高速です。

どう思いますか?

4

2 に答える 2

20

文字列が特定の文字で始まっているかどうかを確認する最速の方法は次のstring matchとおりです。

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

マッチングを行うコードは、最初の文字の後に星があり、次に文字列の終わりがあることを確認するため、残りの文字の検査を停止し$stringます。また、結果の割り当ても必要ありません(ブール値の場合を除きます。これは、string matchバイトコードでコンパイルされるため、特殊なケースです)。

于 2012-07-29T14:51:54.907 に答える
-2

はい[文字列一致"*"$string_name]これは私のために働いたものです。これは、正規表現やその他のユーティリティと比較して非常に高速です。

于 2014-10-30T10:29:27.623 に答える