2

私はかなり新しいので、これを適切に機能させることができませんでした。

私はこの文字列を持っています

["string1","string2","string3","string4","string5","string6","string7","string8","string9","string10"]

そして、「」の間のすべての値を取得したい

タスクを実行するには正規表現が最適だと思います。

ご協力いただきありがとうございます。

4

4 に答える 4

5

これにより、引用符の間がキャプチャされます。

(?<=")[\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);
}
于 2012-08-10T13:24:56.637 に答える
3

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);
}

ちょっとやり過ぎのように見えますが。

于 2012-08-10T13:52:42.543 に答える
1

私の意見では、これは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);
}

これには、引用符で囲まれた文字列が乱雑になった場合に変更する可能性のある特別な一致する正規表現は必要ありません。その結果、(これも私の意見ですが)よりエレガントです。

于 2012-08-10T13:36:52.867 に答える
0

あなたがCSV文字列を持っていることを意味する場合

"\"string1\", \"string2\", \"string3\"" 

次に、これほど些細なことに正規表現は必要ありません。LINQ を少し加えてString.Splitを使用できます。

var values = csvString.Split(',').Select(s => s.Replace("\"", "").Trim());
于 2012-08-10T13:41:25.910 に答える