我有一个示例字符串数据
string state="This item (@"Item.Price", "item") is sold with an price (@"Item.Rate", "rate") per (@"Item.QTY", "Qty")";
我希望输出为
string subStr="Item.Price|Item.Rate|Item.QTY"
有人可以建议一些解决方案。我试图从文件中读取这些数据。 我有像
这样的示例代码if (!string.IsNullOrEmpty(state) && state != null)
{
while (state.IndexOf("Value(@\"") > 0)
{
int firstindex = state.IndexOf("(@\"");
int secondindex = state.IndexOf("\", \"");
if (firstindex > 0 && secondindex > 0)
{
keys.Add(state.Substring(firstindex + 3, secondindex - firstindex - 8));
state = state.Substring(secondindex + 3);
}
}
}
当数据很大时,抛出此异常:
Length cannot be less than zero
有人可以为此建议一些模式匹配机制。
答案 0 :(得分:4)
var subStr = String.Join("|", Regex.Matches(state, @"@\""([\w\.]+)\""")
.Cast<Match>()
.Select(m => m.Groups[1].Value));
subStr将为Item.Price|Item.Rate|Item.QTY
答案 1 :(得分:0)
试试这个
string state="This item (@\"Item.Price\", \"item\") is sold with an price (@\"Item.Rate\", \"rate\") per (@\"Item.QTY\", \"Qty\")";
var regex=new Regex("\\(@\"(?<value>.*?)\",");
string.Join(
"|",
regex.Matches(state).Cast<Match>().Select(m => m.Groups["value"].Value)
);