检查字符串是否包含Tcl中的片段

use*_*369 4 string tcl

我有一组单词,例如{6-31G*,6-311G*,6-31 ++ G*,6-311 ++ G**}.如您所见,常见的片段是"6-31".我现在需要做的是检查字符串是否$variable包含这个片段.我知道我可以用这样的正则表达式做到:

if {[regexp {^6-31} $variable]} {
  puts "You provided Pople-style basis set"
}
Run Code Online (Sandbox Code Playgroud)

但是我可以使用其他解决方案(只是出于好奇)?

gle*_*man 11

只是为了检查字符串是否包含特定的子字符串,我会使用 string first

set substring "6-31"
if {[string first $substring $variable] != -1} {
    puts "\"$substring\" found in \"$variable\""
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用string match或与glob匹配switch

switch -glob -- $variable {
    *$substring* {puts "found"}
    default      {puts "not found"}
}
Run Code Online (Sandbox Code Playgroud)