如何查找在文件中出现多次的重复字符串

时间:2019-03-13 23:33:47

标签: tcl

我有以下代码来打印在列表中出现多次的字符串

set a [list str1/str2 str3/str4 str3/str4 str5/str6]
foreach x $a {
  set search_return [lsearch -all $a $x]
  if {[llength $search_return] > 1} {
   puts "search_return : $search_return"
  }
}

我需要打印在列表中出现多次的str3 / str4

2 个答案:

答案 0 :(得分:1)

执行此操作的规范方法是使用数组或字典,它们都是关联映射。这是一个使用字典对数据进行单循环的版本(它不知道某项在打印时出现的总次数,但有时仅知道倍数就足够了。)

set a [list str1/str2 str3/str4 str3/str4 str5/str6]

# Make sure that the dictionary doesn't exist ahead of time!
unset -nocomplain counters
foreach item $a {
    if {[dict incr counters $item] == 2} {
        puts "$item appears several times"
    }
}

答案 1 :(得分:0)

我想您可以使用数组来做类似的事情,因为数组具有唯一的键:

set a [list str1/str2 str3/str4 str3/str4 str5/str6]
foreach x $a {
  incr arr($x)   ;# basically counting each occurrence
}

foreach {key val} [array get arr] {
  if {$val > 1} {puts "$key appears $val times"}
}