2012-11-15 232 views
1

如果?後跟數字,我想用文本Rs替換問號字符?C#正則表達式替換問號

這是我試過的。但不工作。

string str = "DFg sdfsdaf ?145 dfgsdf ?fg"; 
str = str.Replace(@"\\?", "Rs"); 
Console.WriteLine(str); 

所需的輸出:

DFg sdfsdaf Rs145 dfgsdf ?fg 

請幫助。

+0

不工作..... –

+0

爲什麼你需要正則表達式? – Default

+1

你應該使用[Regex.Replace](http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace.aspx),而不是[string.Replace](http:// msdn.microsoft.com/en-us/library/system.string.replace.aspx) – Default

回答

3

嘗試這樣太:

System.Text.RegularExpressions.Regex.Replace(str,@"\?(?=\d+)","Rs"); 

我會建議this讀。上述模式查找?並檢查它是否跟着digit一次或多次,然後用Rs替換?

+0

完美.....非常感謝..先生.. –

+0

很高興看到它有幫助! – NeverHopeless

1

試試這個正則表達式

\\?((?:\d+)) 

使用正則表達式來處理這個問題: -

Regex oRegex = new Regex(@"\?((?:\d+))"); 
    str = oRegex.Replace(str, "Rs$1"); 
+0

的意思是Regex.Replace? str.Replace搜索字符,而不是正則表達式。 – Default

+0

不工作..... –

+0

@默認:你說得對,它是Regex.Replace。感謝您指點。 –

3

試試這個:

Regex.Replace(str, @"\?(\d)", @"Rs$1") 

它將匹配文字問號後面跟着一個數字和將其替換爲Rs後跟該數字。後面跟着非數字的問號保持不變。

例子:

var str = "DFg sdfsdaf ?145 dfgsdf ?fg"; 
Console.Out.WriteLine(Regex.Replace(str, @"\?(\d)", @"Rs$1")); 

輸出:

DFg sdfsdaf Rs145 dfgsdf ?fg 
+0

hi..the輸出即將DFg sdfsdaf Rs45 dfgsdf?fg .....第一個數字被刪除...請幫助 –

+0

感謝您的幫助... –

+2

@mhasan確保您的替換是'「Rs $ 1」 '不只是'「Rs」'。 「$ 1」被替換爲匹配的數字。 – verdesmarald