2012-07-13 94 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

相關問題