-7

文字列に含まれる任意の数の二重引用符を削除できる C# の正規表現が必要です。これは、StreamReader から読み取った後、文字列に含まれるすべての二重引用符を置き換えたい csv ファイルです。最初の行はヘッダーで、2 番目の行はデータです。例:

"E-mail","First Name","Last Name","Company"
"san@test.com","sanjay","sen","this is my "test" company"

したがって、理想的には正規表現は次の出力を与えるはずです:

"E-mail","First Name","Last Name","Company"
"san@test.com","sanjay","sen","this is my test company "

したがって、列から二重引用符が削除され"this is my "test" company"、その結果が"this is my test company"

4

2 に答える 2

1

カンマの周りにいくつかの空白文字があるはずなので、

output = Regex.Replace(input, "(?<!,\s*)\"(?!\s*,)", "");

CSV標準では、などの内部で二重引用符を使用"this is a ""legal"" format"できます。

このような引用を削除するには、次を使用する必要があります

output = Regex.Replace(input, "(?<!,\s*)\"{2}(?!\s*,)", "");
于 2012-10-06T13:16:13.390 に答える
1

正規表現をいじくり回すのではなく、不適切にエスケープされた文字列のソースを修正するようにしてください。それができず、何かを成し遂げたいと切望している場合、コンマまたは文字列の開始/終了に隣接していない引用符を削除するのが手っ取り早い方法です。

resultString = Regex.Replace(subjectString, "(?<!,|^)\"(?!,|$)", "");

これは、一度に 1 つの CSV 行を処理していることを前提としています。ファイル全体が 1 つの文字列に含まれている場合はRegexOptions.Multiline、3 番目のパラメーターとして使用します。

于 2012-10-06T12:58:16.523 に答える