次の文字列をどのように分割しますか?
test, 7535, '1,830,000', '5,000,000'
結果は
test
7535
'1,830,000'
'5,000,000'
私は試します:
Dim S() as string = mystring.split(",")
しかし、私は、
test
7535
'1
830
000'
'5
000
000'
ありがとう
便利で高品質のライブラリが利用できる場合は、CSV を手動で解析しないでください。お願いします!
CSV 解析には多くの潜在的な落とし穴があり、このライブラリは、私のテストによると、それらのほとんどをきれいに解決します。
つまり、これが 1 回限りのタスクであり、文字列が常に例のようになっている場合は、次のように正規表現を使用できます (VB.NET 構文が間違っている可能性があります。修正してください)。
Dim s as string = "1, 2, '1,233,333', '8,444,555'";
Dim r as Regex = new Regex(",\s");
Dim re() as string = r.Split(s);
これは、区切りのコンマの後に常にスペースがあり、数字の間のコンマにスペースがないことを前提としています。常にそうではない場合は、次のことができます。
この例だけで正規表現を使用する必要がない場合、Split関数 (Microsoft.VisualBasic.Strings のメンバー) は文字列を区切り文字として使用できるため、「,」と入力して、後にスペースがあるコンマのみをキャッチします。
Dim s As String = "1, 2, '1,233,333', '8,444,555'"
Dim r() As String = Split(s, ", ")
Dim words as New List(Of String)()
Dim inQuotes as Boolean
Dim thisWord as String
For Each c as Char in String
If c = "'"c Then inQuotes = Not inQuotes
If c = ","c AndAlso Not inQuotes Then
words.Add(thisWord)
thisWord = Nothing
Else
thisWord &= c
End If
Next
この正規表現を使用してみてください:"('([^']|'')*'|[^',\r\n]*)(,|\r\n?|\n)?"