2011-07-16 29 views
0

字符串我有這樣的字符串:Csharp:查找和替換特定字符||之間的字符串匹配在使用正則表達式

string originalStringBefore = "http://www.abc.com?a=||ThisIsForRndNumber||&qq=hello&jj=||ThisIsForRndNumberAlso||"; 

我希望每一個來到這間串||用隨機數代替。

現在,隨機數的生成很容易,但我找不到寫正則表達式的方式來使用模式搜索字符串並將其替換。

我不想通過字符串操作函數來做到這一點。

預期的解決方案/結果:

string originalStringAfter = "http://www.abc.com?a=||254877787||&qq=hello&jj=||6594741454||"; 
+1

爲什麼'&qq = hello&jj ='應該和正則表達式匹配? –

回答

1
string originalStringBefore = "http://www.abc.com?a=||ThisIsForRndNumber||&qq=hello&jj=||ThisIsForRndNumberAlso||"; 

Random r = new Random(); 
Regex rgx = new Regex(@"\|\|.*?\|\|"); 
Console.WriteLine(rgx.Replace(originalStringBefore, "||" + r.Next(int.MaxValue) + "||")); 
+0

這發生在OP的字符串上,但如果兩個待替換的字符串在一行之後,比如'|| ReplaceThis || ReplaceThatToo ||'怎麼辦? –

+0

這是一個不同的邏輯。如果這是他想要的,那麼他的字符串上的結果應該是:「http://www.abc.com?a = || 12345 || 123456 || 124567 ||」'。沒有? –

+0

@Tim:好的!但這不是這裏的問題:)但謝謝指出爲他人和我。 :) –

1

它看起來像你想這個表達式:

(?<=\|\|)\w+(?=\|\|) 

||之間找到字母數字和葉含有非字母數字字符(如&)獨弦。

然後,在C#:

public String ComputeReplacement(Match m) { 
    return RandomNumberString(); 
} 

resultString = Regex.Replace(subjectString, @"(?<=\|\|)\w+(?=\|\|)", new MatchEvaluator(ComputeReplacement)); 
+0

但這些||之間可以有任何字符,除了|本身。 \ w在這種情況下應該被刪除? –

+0

@Mazhar:那你爲什麼不更換'&qq = hello&jj ='? –

+0

我不能簡單地只有querystring參數的值。否則這是一個開銷。當我們知道要替換什麼時,只能在||之間 –

0

請找到正則表達式替換命令粘貼下面

string result = Regex.Replace(originalStringBefore, @"\|\|.*?\|\|","||ReplaceCharactors||"); 

怎麼過通過this網站希望這個WIL幫助你寫reguler表達的旅途

謝謝。

相關問題