2017-06-26 15 views
0

C#では文字列内の文字を置き換えようとしています。より正確には、引用符で囲まれていないか、コンマで先行されていない場合でも、その二重引用符を一重引用符に置き換えたいと思います。したがって、たとえば:特定の文字の組み合わせを別の文字に置き換えてください

John",123 

と 123、 "二重引用符の前または後のいずれかにコンマがあるのでジョン

は、両方の罰金ですが、:

John"Marks 

ではありません括弧で区切られていない二重引用符があるため、大丈夫です。一重引用符で置き換える必要があります。

John'Marks 

私はこの1つを理解するのに苦労しています。おかげで...

答えて

6

あなたの検索正規表現のためのルックアラウンドを使用することができます。

(?<!,)"(?!,) 

RegEx Demo

正規表現の分裂:

  • (?<!,) - 前の文字を主張する負の後方参照がありますカンマではありません
  • " - は、二重引用符
  • (?!,)一致 -

置換文字列はちょうど単一引用符になりコンマがない次の文字を主張する否定先読みを"'"

コード:

string repl = Regex.Replace(str, @"(?<!,)\"(?!,)", "'"); 
+1

ありがとうanubhava ...すぐにそれを試してみましょう.... brb – user1900799

+1

C#の正しいパターン宣言は '@"(?

+0

はい、Wiktorに感謝します。私はエスケープオプションを使用しました。 – anubhava

関連する問題