2017-05-26 19 views

答えて

1

非常に短いバージョン:これはスイフトで高度に使用される方法ではありません。多くの場合、より良いツールがあります。これは主に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で使用します。

+1

はい、それはSwiftで使用するのが難しくなります。人々はしばしば '.orderedSame'と比較することによって混乱します。 –

+0

また、2つの文字列がどのように「等しい」とみなされるかについて、より多くのオプションを使用できます。実際の例はSwiftの 'resume!=résumé'ですが、' options:[.diacriticInsensitive] 'で関数を呼び出すと、それらは等しくなります。 'locale'パラメータは、ローカルアルファベットに従って文字列を整列することです。私はそれが違いを作ったときの例を考えるのに十分な言語を知らない。 –

+0

'compare'がより強力であると同意した(最後の段落を参照)。しかし、多くの場合、最も賢い解決策ではありません。 –

関連する問題