Ali*_*a87 1 c# regex string split replace
有一点Stringcutting问题.我有一个像这样的字符串:
@VAR;Variable=Deteministic;Value=mostly;Note=Unless Slave is already in use;Op==;@ENDVAR;
Run Code Online (Sandbox Code Playgroud)
注意对我来说不是必需的,所以我想删除所有以Note开头的内容,直到下一个分号.替换方法会很好,但我不知道如何在Note之后获得Chars.
我试过这样的事情:
int index1 = rs.IndexOf("Note=");
int index2 = rs.IndexOf(';', index1+1);
rs = rs.Remove(index1, index2);
Run Code Online (Sandbox Code Playgroud)
我认为这应该足够了,但是如果没有注释就会失败并且我的程序弹出错误.正则表达式是一个选择,但我不能想到这里适合的一个.
请注意,该示例只是一个示例.我不知道输入字符串是什么样的.一行可以包含两个Notes,另一行可以没有.请在答案中考虑这一点.
正则表达式确实可以帮到这里:
rs = Regex.Replace(s, "(?<=;)Note=.*?;", "");
Run Code Online (Sandbox Code Playgroud)
让我解释一下比较模糊的部分:
(?<=;)确保Note前面有分号.但是,该分号不是替代品的一部分.(这是一个积极的后视断言).
.*?;匹配所有字符直到分号,但不贪心.这确保Note=A;x=B;仅在第一个分号之前匹配并x=B保留.