最もエレガントなソリューションですあまり知られていないString.CompareOptions
を.range(of:, options:)
と組み合わせて使用してください。これにより、のように、特殊文字を無視して、大文字小文字のだけでなく、正規表現を使用するなど、少ない労力で多くの複雑な操作を行うことができます。彼らが何であるかわからないなら、それを調べることをお勧めします。トピックに戻る
: あなたはString.CompareOptions
hereについての詳細を読むことができます。ドキュメントはNSString
ですが、String
でも利用できます。あなたが見ることができるように、
let userInput = "HeLLö, how are you doing? Greetings!"
let acceptedWords = ["hello", "hi", "greeting"]
var resultCommants = acceptedWords.filter { (word) -> Bool in
return userInput.range(of: word, options: [.caseInsensitive, .diacriticInsensitive]) != nil
}
// resultCommands = ["hello", "greeting"]
HeLLö
試合greeting
ため.caseInsensitive
と.diacriticInsensitive
のhello
とGreetings
試合:次のように
あなたはそれを使用します。
.filter
演算子に精通していない場合は、配列全体を繰り返し処理し、各項目word
に対して、フィルタリングされたバージョンのアイテムに含まれるかどうかによってtrueまたはfalseのいずれかを返すことが期待されます。アレイ。ここでは、の結果とnil
の結果を比較します。不一致nil
は単語が見つかったことを意味し、そうでない場合は等しくなりません。 ここでという単語が見つかりましたかあなたはもちろん、範囲を使用することができます。
'switch text.lowercased()'と 'switch'ステートメントの異なるケースで小文字のみの文字列を入力します。特殊文字は 'lowercased()'や 'uppercased()'を適用するときに期待されるように翻訳されないことに注意してください:[詳細は以下のQ&Aを参照](http://stackoverflow.com/questions/30532728/how-to-compare-two-strings-ignore-case-in-swift-language)(特に質問に対するコメント) – dfri