使用标准tcl库函数,写一个函数,判断list1是否包含在list2中,要求如下: (1)若list1或者list2两者任意为空,则直接返回 (2)连续相同字符则认为是同一个字符 (3)字符不区分大小写
时间: 2024-05-11 11:14:25 浏览: 44
C标准函数库__C语言所有库函数_VC++6[1].0__NI__CVI_单片机.doc
4星 · 用户满意度95%
下面是一个实现:
```tcl
proc is_contained {list1 list2} {
# 若list1或者list2两者任意为空,则直接返回
if {[llength $list1] == 0 || [llength $list2] == 0} {
return 0
}
# 连续相同字符则认为是同一个字符
set list1 [join [split [string tolower [join $list1 ""]] ""] ""]
set list2 [join [split [string tolower [join $list2 ""]] ""] ""]
# 判断是否包含
if {[regexp [join $list1 ".*"] $list2]} {
return 1
} else {
return 0
}
}
```
上面的函数先将list1和list2都转换成一个字符串,并转换成小写字母,然后使用正则表达式判断list1是否包含在list2中。其中,正则表达式的模式为将list1中的所有元素用".*"连接起来。
使用方法:
```tcl
set list1 {a b c}
set list2 {d e f g a b c h i j}
if {[is_contained $list1 $list2]} {
puts "list1 is contained in list2"
} else {
puts "list1 is not contained in list2"
}
```
阅读全文