したがって、ここには、自分のcsvパーサーをロールするのではなく、Vb.NetTextFiledParserのいずれかを使用する必要があることに注意する投稿がたくさんあります。
試しましたが、間違っている場合は、1つの区切り文字に基づいて解析されます。
したがって、アドレスフィールド「Flat1、StackOverflow House、London」がある場合、3つのフィールドが取得されます。残念ながら、それは私が望んでいることではありません。配列内の単一のアイテムとして残るには、特定のセル内のすべてのものが必要です。
だから私は次のように自分の正規表現を書き始めました:
var testString = @"""Test 1st string""" + "," + @"""Flat 1, StackOverflow House, London, England, The Earth""" + "," + "123456";
var matches = Regex.Matches(chars, @"""([^""\\])*?(?:\\.[^""\\]*)*?""");
var numbers = Regex.Matches(chars, @"\d+$");//only numbers
Assert.That(results.Count(), Is.EqualTo(3));
Assert.That(secondMatch.Count, Is.EqualTo(1));
文字列「123456」が返されないため、最初のアサーションは失敗します。この式は、「Test1ststring」と「Flat1、StackOverflow House、London、England、TheEarth」のみを返します。
私が欲しいのは、正規表現が引用符で囲まれた\エスケープされたすべてのものと数字を返すことです。
私はデータを制御しませんが、図の文字列はすべて引用符で囲まれ、エスケープされ、数値は制御されません。
サードパーティのライブラリを試してみてもあまり成功しなかったので、助けていただければ幸いです。
言うまでもなく、string.splitはアドレスの場合には機能せず、http://www.filehelpers.com/はそのような例を説明していないようです。