我是相当新的,我无法得到这个正常工作。c#使用正则表达式来解析引号之间的字符串
我有这个字符串
[ “字符串1”, “字符串2”, “STRING3”, “串,4”, “STRING5”, “string6”, “string7”, “string8”, “string9” “string10”]
而且我想要得到的“
我认为,正则表达式将是最好的做任务。
感谢您的帮助。
之间的所有值我是相当新的,我无法得到这个正常工作。c#使用正则表达式来解析引号之间的字符串
我有这个字符串
[ “字符串1”, “字符串2”, “STRING3”, “串,4”, “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);
}
OP,这是比分裂版本更好的答案 – 2012-08-10 13:44:01
@RyanCopley你能解释为什么你认为它比分割字符串更好吗?IMO使用正则表达式来简化像这样的字符串操作是矫枉过正的。它使用分割比使用正则表达式更有效... – James 2012-08-10 13:48:16
单个使用场景的效率是值得商榷的..但后来我们猜测:)我希望它以某种方式提供帮助无论如何:) – 2012-08-10 14:11:19
在我看来,这是为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\""
然后,你不需要为微不足道,因为这东西正则表达式,你可以使用String.Split与LINQ洒:
var values = csvString.Split(',').Select(s => s.Replace("\"", "").Trim());
因为这看起来像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);
}
有点似乎矫枉过正。
这不是一个字符串? – Thomas 2012-08-10 13:24:47
这不是一个字符串。 – Polyfun 2012-08-10 13:24:55
那是什么? – maddo7 2012-08-10 13:26:17