ParseCSV関数を使用してC#でCSVファイルを解析しています。
CSVファイルの行の最後の列には次のものが含まれます:NM 120922C00002500(この後のスペースがたくさんあります)
ParseCSV関数で、CSVファイルを読み取った結果として入力文字列を渡します。
inputstringの一部は次のとおりです。
"1"、000066、 "07/30/2012"、 "53193315D4"、 "B"、 "99AAXXPB0"、 ""、 ""、 ""、 "CALL NM 09/22/12 00002.500"、 "MG"、 100.00,1.050000,310,32550.00,25530.70,360,37800.00,30477.78、 "C"、2.50000,09 / 22/2012、 "NM"、" NM120922C00002500 "。
CSVParse関数で、次のことを行っています。
string csvParsingRegularExpressionOld = Prana.Global.ConfigurationHelper.Instance.GetAppSettingValueByKey("CSVParsingRegularExpression");
string csvParsingRegularExpression = csvParsingRegularExpressionOld.Replace("\\\\", "\\");
csvParsingRegularExpressionでは、値は次のようになります。
((?<field>[^",\r\n]*)|"(?<field>([^"]|"")*)")(,|(?<rowbreak>\r\n|\n|$))
私はフォローアップします
Regex re = new Regex(csvParsingRegularExpression);
MatchCollection mc = re.Matches(inputString);
foreach (Match m in mc)
{
field = m.Result("${field}").Replace("\"\"", "\"");
}
ただし、最後の値「NM 120922C00002500」に関しては、ここのフィールドには空の文字列が含まれています。この問題の可能な解決策は何でしょうか?
CSVファイルに問題があるのか、正規表現メソッド「Matches」に問題があるのかわかりません。