3

問題があり、どうしたらよいかわかりません。

質問:二重引用符の内側にある二重引用符を削除する必要があります


文字列の例:

"MIKE YANICK"、 "412 A AVE" E "、" "、" NADIEN PA "、" "、" 190445468 "

ご覧のとおり、「412 AAVE"E」内の文字Eには余分な二重引用符が付いています。


削除する必要があります。

これが私の結果です。

"MIKE YANICK"、 "412 A AVE E"、 ""、 "NADIEN PA"、 ""、 "190445468"


  • 毎回パターンが変わるので表現が使えません。
  • 値をハードコーディングする必要があるため、string.replaceは機能しません
  • 二重引用符の間にある値の読み取りは、中央の引用符によってスローされるため、機能しません。

助けてください...

4

4 に答える 4

4

次のような正規表現を使用できます。

(?<!(^|,))"(?!(,|$))

"これは、文字列の先頭またはコンマが後に続かず、コンマまたは文字列の末尾が続かない二重引用符()と一致します。

于 2013-03-18T19:54:11.427 に答える
3

これはあなたの例で機能します:

Regex.Replace("\"MIKE YANICK\",\"412 A AVE \"E\",\" \",\"NADIEN PA\",\" \",\"190445468\"",
    "(?<=\")([^,]*)(?=\")",
    m => m.Value.Replace("\"", string.Empty)) ;

出力:

"MIKE YANICK","412 A AVE E"," ","NADIEN PA"," ","190445468"
于 2013-03-18T20:01:50.680 に答える
0

私がすることは、探してください",。引用符がコンマの横にない場合は、引用符を削除します。

于 2013-03-18T19:54:19.303 に答える
0

置換を使用するのはどうですか?

何かのようなもの:

string test = "\"MIKE YANICK\",\"412 A AVE \"E\",\" \",\"NADIEN PA\",\" \",\"190445468\"";
string[] fields = test.Split(new char[] {','});
StringBuilder result = new StringBuilder();
bool first = true;

foreach (var field in fields)
{
    if(first)
    {
        first = false;
    }
    else
    {
            result.Append(",");
    }

    result.AppendFormat("\"{0}\"", field.Replace("\"",""));
}

Console.WriteLine (string.Format("Old : {0} New: {1}", test,result.ToString()));
于 2013-03-18T20:02:14.287 に答える