如何删除字符串C#之间的一些文本

时间:2012-07-13 09:37:25

标签: c# regex lookahead lookbehind

我有这样的文字:

  

LINE \ r \ n 5 \ r \ n11DA3 \ r \ n330 \ r \ n2 \ r \ n100 \ r \ n \ nAcDbEntity \ r \ n   8 \ r \ n0-FD \ r \ n 6 \ r \ nHIDDEN \ r \ n100

以粗体显示文字。我想替换5 \ r \ n和\ r \ n100之间的文本。我试过这段代码:

result[line] = Regex.Replace(result[line], @"((?<=5\r\n)(\S+?)(?=\r\n100))", "0");

但它不起作用。我的代码有问题吗?我确定(\ S +?)是问题所在。有什么方法可以解决吗?

2 个答案:

答案 0 :(得分:2)

你可以使用代码:

string type_1 = "LINE\r\n 5\r\n11DA3\r\n330\r\n2\r\n100\r\nAcDbEntity\r\n 8\r\n0-FD\r\n 6\r\nHIDDEN\r\n100";            
string output = Regex.Replace (
    type_1,
    "5\r\n(.*?)\r\n100",
    "5\r\n0\r\n100",
    RegexOptions.Singleline|RegexOptions.Compiled
);
Console.WriteLine (output);

输出:

LINE
 5
0
100,1
AcDbEntity
 8
0-FD
 6
HIDDEN
100

它会将所有文本 5 \ r \ n - 在此处 - \ r \ n100 的所有遭遇更改为 5 \ r \ n \ n \ r \ n100 。如果您想要更具体的更改,请告诉我。

答案 1 :(得分:0)

如果可移动内容为静态,则可以使用

s.Replace("11DA3\r\n330\r\n2" ,100);

甚至你可以尝试使用string.indexof