以下のコードは、文字列がすべて小文字か大文字であればソートするために機能しますが、ソートすると大文字小文字を無視します。どうすればこのことができますか?以下は、カスタムクラスの配列です。文字列配列のソートと大文字小文字の区別
resultListArray.sort({ $0.fileName.compare($1.fileName) == NSComparisonResult.OrderedAscending })
以下のコードは、文字列がすべて小文字か大文字であればソートするために機能しますが、ソートすると大文字小文字を無視します。どうすればこのことができますか?以下は、カスタムクラスの配列です。文字列配列のソートと大文字小文字の区別
resultListArray.sort({ $0.fileName.compare($1.fileName) == NSComparisonResult.OrderedAscending })
)
更新:のXcode 8.2•スウィフト3.0.2
let array = ["def","Ghi","Abc" ]
let sorted1 = array.sorted{$0.compare($1) == .orderedAscending}
print(sorted1) // ["Abc", "Ghi", "def"]
let sorted2 = array.sorted{$0.localizedCompare($1) == .orderedAscending}
print(sorted2) // ["Abc", "def", "Ghi"]
// you can also use the String compare options parameter to give you more control when comparing your strings
let sorted3 = array.sorted{$0.compare($1, options: .caseInsensitive) == .orderedAscending }
print(sorted3) // ["Abc", "def", "Ghi"]\n"
// which can be simplifyed using the string method caseInsensitiveCompare
let sorted4 = array.sorted{$0.caseInsensitiveCompare($1) == .orderedAscending}
print(sorted4) // ["Abc", "def", "Ghi"]\n"
// or localized caseInsensitiveCompare
let array5 = ["Cafe B","Café C","Café A"]
let sorted5 = array5.sorted{$0.localizedCaseInsensitiveCompare($1) == .orderedAscending}
print(sorted5) // "["Café A", "Cafe B", "Café C"]\n"
ここsort
は物事を注文する方法を変更するan answer about overriding compareTo
in Javaです。文字列を大文字に変換して比較すればどうなるでしょうか?
私はスウィフトでプログラミングしています。通常は、文字列を大文字または小文字に変換できますが、今回はオプションではありません。 –
ああ、私の謝罪。私はそのタグを間違えた。この質問を参照してください:https://stackoverflow.com/questions/31871395/swift-2-iterating-and-upper-lower-case-some-characters – Davislor
これは動作するようになりました。ありがとうございました! –
あなたはString
は小文字とし、それを比較するために変換することができます:
array.sort{ $0.lowercaseString < $1.lowercaseString }
これは、この目的のために使用する必要がある方法です。
あなたのケースではpublic func caseInsensitiveCompare(aString: String) -> NSComparisonResult
:
resultListArray.sort({ $0.fileName.caseInsensitiveCompare($1.fileName) == NSComparisonResult.OrderedAscending })
ありがとうございました! –
@GaryDormanあなたはようこそ –