SortedCollection忽略字符串中的大小写

时间:2019-05-07 09:36:04

标签: smalltalk pharo

默认情况下,SortedCollection区分大小写(考虑到当今字符串的使用情况,这让我感到惊讶),例如

list := #('z' 'c' 'C' 'A' 'a').
slist := list asSortedCollection. "a SortedCollection('A' 'C' 'a' 'c' 'z')"

使用Spotter,我发现了caseInsensitiveLessOrEqual:,但不确定如何将其与SortedCollection一起使用。如何轻松获得忽略大小写的排序集合?

2 个答案:

答案 0 :(得分:4)

static std::shared_ptr<Example> get_example() { return std::make_shared<Example>(); }也采用了一个排序块:

repo = soup.find(class_="search-results-list")

Num_pieces = repo.ul.li.string

编辑,这是一种获得一致订单的解决方案(这很丑陋,我是从潜​​入asSortedCollection:中获得的)

list := #('z' 'c' 'C' 'A' 'a').
slist := list asSortedCollection: 
    [ :a :b | a caseInsensitiveLessOrEqual: b ]. "a SortedCollection('a' 'A' 'C' 'c' 'z')"

答案 1 :(得分:1)

我在地址@Amos M. Carpenter评论中添加答案-排序稳定性。您的第二个代码不必要地复杂。您可以做的是在asSortedCollection上添加一个list(这将根据字母的字母位置和“大写”对字符串进行排序,您将获得一致的解决方案:

list := #('z' 'c' 'C' 'A' 'a') asSortedCollection.
slist := list asSortedCollection: 
    [ :a :b | a caseInsensitiveLessOrEqual: b ]. "SortedCollection('a' 'A' 'c' 'C' 'z')"

list := #('z' 'C' 'c' 'A' 'a') asSortedCollection.
slist := list asSortedCollection: 
    [ :a :b | a caseInsensitiveLessOrEqual: b ]."SortedCollection('a' 'A' 'c' 'C' 'z')"