非常に短いバージョン:これはスイフトで高度に使用される方法ではありません。多くの場合、より良いツールがあります。これは主にObjCで使用されています。
import Foundation
let alice = "alice"
let bob = "bob"
let upBob = "BOB"
let bobby = "bobby"
// all are true
bob.compare(bob) == .orderedSame
bob.compare(alice) == .orderedDescending
bob.compare(upBob, options: .caseInsensitive) == .orderedSame
// This is a little weird in Swift because of how strings work. It's easier to use in ObjC
let rangeOfBob = bobby.range(of: "bob")!
bobby.compare(bob, range: rangeOfBob) == .orderedSame
bob.compare(umlaut, options: .diacriticInsensitive) == .orderedSame
キーレッスンは、compare
がソート順を示しています。 2つの文字列が同じ場合、.orderedSame
となります。パラメータの前にターゲット注文がある場合は、.orderedAscending
となります。それ以外の場合は.orderedDescending
です。
compare
は単純な使い方ではあまり「Swifty」ではありません(代わりに==
と<
を使用することがよくあります)。しかし、あなたは分音のようなものを必要とするなら、非常に強力です。大文字小文字の区別がない場合は、lowercased(with:)
をSwiftで使用します。
はい、それはSwiftで使用するのが難しくなります。人々はしばしば '.orderedSame'と比較することによって混乱します。 –
また、2つの文字列がどのように「等しい」とみなされるかについて、より多くのオプションを使用できます。実際の例はSwiftの 'resume!=résumé'ですが、' options:[.diacriticInsensitive] 'で関数を呼び出すと、それらは等しくなります。 'locale'パラメータは、ローカルアルファベットに従って文字列を整列することです。私はそれが違いを作ったときの例を考えるのに十分な言語を知らない。 –
'compare'がより強力であると同意した(最後の段落を参照)。しかし、多くの場合、最も賢い解決策ではありません。 –