如何在TCL中找到列表的长度及其非重复/唯一值的值
例如:ABABC ===>预计结果是 唯一字符数为1,其值为C
答案 0 :(得分:1)
set str ABABC
foreach char [split $str ""] {incr count($char)}
foreach key [array names count] {
if {$count($key) == 1} {
incr nuniq
lappend uniq $key
}
}
puts "$nuniq: [join $uniq ,]"
1: C
代替split
,您可以使用regexp -all -inline {.} $str
对于旧的Tcl,你可以这样做:
proc myincr {varname {step 1}} {
upvar 1 $varname var
if {![info exists var]} {
set var $step
} else {
incr var $step
}
}
并使用myincr
代替incr
答案 1 :(得分:0)
另一种方法,
set var "ABCABDF"
foreach v [split $var ""] {
lappend a $v
}
puts $a
set unique [lsort -unique $a]
set unique_chars ""
foreach item $unique {
set cnt 0
foreach i $a {
if {$item == $i} {
incr cnt
}
}
if {$cnt == 1} {
set unique_chars [lappend unique_chars $item]
}
}
;# To Print Unique Chars
puts $unique_chars