我正在做一個簡單的TCL lsort使用-nocase標誌。但是,我運行該代碼的一個系統仍在使用TCL 8.4,其中nocase不可用。有沒有簡單的解決方法,或者我將不得不手動處理這個?沒有lsort -nocase選項的TCL 8.4解決方法?
回答
TCL 8.4具有-dictionary標誌,它提供了不區分大小寫的比較。如果你的字符串不包含數字,我認爲這個行爲等於-nocase標誌。
從文檔:
-dictionary 使用字典式的比較。這與-ascii相同,除了(a)情況被忽略,除非作爲決勝者,並且(b)如果兩個字符串包含嵌入的數字,則數字會作爲整數比較,而不是字符。例如,在-dictionary模式下,bigBoy在bigbang和bigboy之間排序,而x10y在x9y和x11y之間排序。
-nocase 導致比較以不區分大小寫的方式處理。如果與-dictionary,-integer或-real選項結合使用,則不起作用。
這裏有一個使用Schwartzian變換:
set lst {This is a Mixed Case sentence and this is the End}
set tmp [list]
foreach word $lst {lappend tmp [list $word [string tolower $word]]}
unset lst
foreach pair [lsort -index 1 $tmp] {lappend lst [lindex $pair 0]}
puts $lst
輸出
a and Case End is is Mixed sentence the This this
謝謝你。十分優雅。 – TrojanName 2012-02-22 15:39:58
寫自己的字符串比較過程:
proc nocaseCompare {a b} {
set a [string tolower $a]
set b [string tolower $b]
if {$a < $b} {
return -1
} elseif {$a > $b} {
return 1
} else {
return 0
}
}
set lst {This is a Mixed Case sentence and this is the End}
puts [lsort -command nocaseCompare $lst]
輸出:
a and Case End is is Mixed sentence the This this
很棒的答案!謝謝 – TrojanName 2012-02-22 20:42:40
- 1. 有效的方法來給予多重計數在TCL lsort
- 2. 有沒有辦法在TCL 8.4中創建一個字典全局變量8.4
- 3. SPOJ DP lsort方法
- 4. 解決方法gnuplot中的「replot」選項
- 5. Android:有沒有解決SuperNotCalledException的方法?
- 6. 有沒有解決失敗的gcutil adddisk的解決方法?
- 7. APNS反饋有沒有解決方法?
- 8. 有沒有其他解決方法,CalledFromWrongThreadException?
- 9. Tcl 8.4 - 繪製條形圖
- 10. 項目沒有選擇建立該解決方案配置
- 11. Scala中沒有strictfp - 解決方法?
- 12. ruby選項解析器。有沒有添加隱藏選項的方法?
- 13. 有沒有解決方法在子類中清空方法?
- 14. 有沒有解決方法來從forEach方法「返回」流?
- 15. 有沒有解決「解析死亡錯誤」的方法?
- 16. 而不使用lsort
- 17. Scipy fsolve:沒有解決方案使所有有效的解決方案失效
- 18. 有沒有辦法修改解決方案中的所有項目?
- 19. 首選項沒有過時的方法
- 20. 有沒有解決此C4702鏈接時警告的解決方法?
- 21. 是否有選擇器或解決方法來選擇沒有子項的任何元素
- 22. 解決方案沒有違反
- 23. 如何在tcl中創建線程8.4
- 24. 解決選項[Nothing]?
- 25. urllib.urlopen無法正常工作。有沒有解決方法?
- 26. java.lang.NumberFormatException有沒有更好的解決此問題的方法?
- 27. 在tcl中獲取行號8.4
- 28. 如何在Tcl 8.4中應用?
- 29. 有沒有解決'com.apple.product-type.framework'問題的方法?
- 30. 沒有javascript的優雅解決方案
謝謝!我可以忍受數字被視爲整數的事實,但這並不理想。但我會等待看看有沒有人給出答案。 – TrojanName 2012-02-22 13:26:28