默认情况下,a SortedCollection是区分大小写的(考虑到当今如何使用String,这让我感到惊讶),例如,
list := #('z' 'c' 'C' 'A' 'a').
slist := list asSortedCollection. "a SortedCollection('A' 'C' 'a' 'c' 'z')"
Run Code Online (Sandbox Code Playgroud)
使用Spotter,我发现caseInsensitiveLessOrEqual:但不确定如何将其与结合使用SortedCollection。如何轻松获得忽略大小写的排序集合?
asSortedCollection:也需要一个排序块:
list := #('z' 'c' 'C' 'A' 'a').
slist := list asSortedCollection:
[ :a :b | a caseInsensitiveLessOrEqual: b ]. "a SortedCollection('a' 'A' 'C' 'c' 'z')"
Run Code Online (Sandbox Code Playgroud)
编辑这是一个获得一致顺序的解决方案(这很丑陋,我是从深入研究中得到的caseInsensitiveLessOrEqual:)
caseInsensitiveCompare := [ :a :b | | result |
result := a compare: b caseSensitive: false.
"equal ignoring case"
result = 2 ifTrue: [ a compare: b caseSensitive: true ].
"less than, so return true (else return false since result=2)"
result = 1 ].
slist := list asSortedCollection: caseInsensitiveCompare.
"a SortedCollection('A' 'a' 'C' 'c' 'z')"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |