2017-04-21 3 views
0

私のreplacementOccurrences関数に問題があります。私はそうのような文字列いる:だから私はこのコード私がする必要がどのようなSwift 3 replacementOccurrences exact

let x = "john, johnny, johnney" 

は唯一の「ジョン」

を削除しているがあります。私が手の問題は、これが削除されること

y = "john" 
x = x.replacingOccurrences(of: y, with: " ", options: NSString.CompareOptions.literal, range: nil) 

ですジョンのすべてのインスタンス...また、名前が異なる順序になる可能性があるので、私は本当に私の問題を解決しない範囲を設定することについて考えた。

「正確な」見落としているCompareOptions関数がありますか、正規表現を作成する必要はありますか?

すべての言語で動作します「正確な」のための一般的なルールが存在しないため敬具、

デニス・エンジェル

答えて

1

正確な単語に一致する正規表現を使用する必要があります。目的の単語を\bの間に挿入するだけです。このようにしてみてください。説明のための

let x = "johnny, john, johnney" 
let y = "john" 
let z = x.replacingOccurrences(of: "\\b\(y)\\b", with: " ", options: .regularExpression) // "johnny, , johnney" 

let x = "johnny &john johnney" 
let y = "&john" 
let z = x.replacingOccurrences(of: y + "\\b", with: " ", options: .regularExpression) 
+0

x = "johnny john johney"の場合、どうすればいいですか? – Denis

+0

申し訳ありませんx = "johnny&john johnney"とy = "&john" – Denis

+0

私はすべての単語の前に非文字を持っています。だから、いくつかの言葉は1つといくつか持っていない。また、xは潜在的に "&johnny&john johnney"になる可能性があるので、私のregrex文字列に非文字を含める方法はありますか? – Denis

0

正規表現は、おそらくあなたの最良の選択肢です。英語やロマンチックな言語では、「正確」は置換する単語の前後にアルファベット文字がないと定義します。

正規表現では、複雑な文字の組み合わせがないため、英語の場合は比較的単純に表現できますが、a-zはほとんどすべてです。他の言語では、発音区別記号(フランス語、その他のラテン語)を心配する必要があります。アラビア語では、いくつかの単語の先頭にあるA(アレフ)の組み合わせなどを考慮する必要があります。

+0

感謝!!私はPythonで正規表現を使用しましたが、それは迅速に利用可能であることを知らなかった。 – Denis