web-dev-qa-db-ja.com

文字列にTclのフラグメントが含まれているかどうかを確認する

単語のセットがあります。 {6-31G *、6-311G *、6-31 ++ G *、6-311 ++ G **}。ご覧のとおり、一般的なフラグメントは「6-31」です。 Tclで今必要なのは、$variableの下の文字列にこのフラグメントが含まれているかどうかを確認することです。私は次のような正規表現でそれを行うことができることを知っています:

if {[regexp {^6-31} $variable]} {
  puts "You provided Pople-style basis set"
}

しかし、(好奇心から)他にどのような解決策を使用できますか?

5
user2300369

文字列に特定の部分文字列が含まれているかどうかを確認するために、私は string first を使用します

set substring "6-31"
if {[string first $substring $variable] != -1} {
    puts "\"$substring\" found in \"$variable\""
}

string matchまたはswitchでグロブマッチングを使用することもできます

switch -glob -- $variable {
    *$substring* {puts "found"}
    default      {puts "not found"}
}
14
glenn jackman