默认情况下,aSortedCollection
是区分大小写的(考虑到当今如何使用String,这让我感到惊讶),例如
list := #('z' 'c' 'C' 'A' 'a').
slist := list asSortedCollection. "a SortedCollection('A' 'C' 'a' 'c' 'z')"
使用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')"
编辑这是一个获得一致订单的解决方案(这很丑陋,我是从钻研而来的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')"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句