2012-07-13 93 views
1

我有这样的文字:如何删除字符串C#之间的一些文字

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

看一看在粗体文本。我想替换5 \ r \ n和\ r \ n100之间的文本。我试过这个代码:

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

但它不起作用。我的代码有问题吗?我确定(\ S +?)是问题所在。任何方式来解决它?

+0

用什么取代它?全部是'0'?一个'0'? – Oded 2012-07-13 09:39:29

+0

我想用一个替换它0 – Gamma 2012-07-13 09:43:30

+1

如果你必须做一个替换,你可以考虑使用String.IndexOf/String.Replace而不是Regex。此外,“\”也是正则表达式的转义序列(不仅仅是编译器),所以你应该将它们加倍以使它成为一个字符串文字。 – 2012-07-13 09:44:13

回答

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 \ n1005 \ r \ n0 \ r \ n100。如果你想要更具体的变化,请让我知道。

+0

很好,谢谢我的朋友,这是完美的 – Gamma 2012-07-13 10:26:08

+0

嗯,我可以问什么是RegexOptions.Singleline | RegexOptions.Compiled的含义? – Gamma 2012-07-13 10:29:28

+0

RegexOptions.Compiled是你可以说我的恋物癖 - 它使编译和启动时间更长,但通过在每次应用程序启动时对其进行预编译,特定regexp的运行时间更快。您现在还可以使用Regex.CompileToAssembly来更快地执行regexp。 SingleLine使。还匹配新的线符号。 – 2012-07-13 10:42:20

0

若是可移动的内容是静态您可以使用

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

甚至可以用string.indexof尝试

+0

umm不,它不是静态的,它是一个十六进制的 – Gamma 2012-07-13 09:56:00

+0

nope它不起作用 – Gamma 2012-07-13 10:00:13

+0

它是一个字符串还是它是什么? – Peru 2012-07-13 10:02:19

相关问题