私はかなり新しいので、これを適切に機能させることができませんでした。
私はこの文字列を持っています
["string1","string2","string3","string4","string5","string6","string7","string8","string9","string10"]
そして、「」の間のすべての値を取得したい
タスクを実行するには正規表現が最適だと思います。
ご協力いただきありがとうございます。
これにより、引用符の間がキャプチャされます。
(?<=")[\w]+(?!=")
拡張例:
string s = "[\"string1\",\"string2\",\"string3\",\"string4\",\"string5\",\"string6\",\"string7\",\"string8\",\"string9\",\"string10\"]";
foreach (Match m in Regex.Matches(s, "(?<=\")[\\w]+(?!=\")")) {
Console.WriteLine(m.Value);
}
JSONっぽいのでJavaScriptSerializerクラスを使ってみる
string myString = "[\"string1\",\"string2\",\"string3\",\"string4\",\"string5\",\"string6\",\"string7\",\"string8\",\"string9\",\"string10\"]";
string[] strings = (new JavaScriptSerializer()).Deserialize<string[]>(myString);
foreach (string str in strings)
{
Console.WriteLine(str);
}
ちょっとやり過ぎのように見えますが。
私の意見では、これはSplit
単なる正規表現ではなく、次のような仕事です。
string str = "[\"string1\",\"string2\",\"string3\",\"string4\",\"string5\",\"string6\",\"string7\",\"string8\",\"string9\",\"string10\"]";
Regex rgx = new Regex("[\\[\\]\"]"); // get rid of the quotes and braces
str = rgx.Replace(str,"");
string [] split = str.Split(','); // split on commas. that's it.
foreach (string s in split)
{
Console.WriteLine(s);
}
これには、引用符で囲まれた文字列が乱雑になった場合に変更する可能性のある特別な一致する正規表現は必要ありません。その結果、(これも私の意見ですが)よりエレガントです。
あなたがCSV文字列を持っていることを意味する場合
"\"string1\", \"string2\", \"string3\""
次に、これほど些細なことに正規表現は必要ありません。LINQ を少し加えてString.Splitを使用できます。
var values = csvString.Split(',').Select(s => s.Replace("\"", "").Trim());