2010-05-25 98 views

回答

2

試試這個:

string input = "120 @ %60 {a}"; 
string pattern = @"%(\d+)"; 
string result = Regex.Replace(input, pattern, "$1%"); 
Console.WriteLine(result); 

%(\d+)圖案%符號後面至少一個數字相匹配。這些數字被捕獲在一個組中,該組通過$1以替換模式$1%引用,最終在捕獲的數字後面放置%符號。

如果您需要考慮小數位數,如60.50%的數字,你可以改用這個模式:@"%(\d+(?:\.\d+)?)"

+0

我需要學習這些正則表達式以及:)。謝謝。 對於我用過的:result = Regex.Replace(result,@「(\ d +)%」,「%$ 1」); – 2010-05-29 08:20:03

+0

此值也可以包含3.5,所以我用f代替了d Regex.Replace(result,@「(\ f +)%」,「%$ 1」);告訴我,如果我錯了。 – 2010-05-30 08:58:02

+1

@Hasan不正確,因爲'\ d'代表數字'[0-9]',而'f'不是任何特殊的正則表達式元字符。要匹配包含小數點的數字(即3.5,60.50等),請使用我在答案中提供的模式:'@「%(\ d +(?:\。\ d +)?)」'。這匹配兩個數字有和沒有小數點。接下來,相反的是模式'@「(\ d +(?:\。\ d +)?)%」'。 '(?:\。\ d +)?'部分匹配一個小數點(轉義點'\ .'),後面跟着數字('\ d +')。它包含在'(?:...)?'中,這意味着*可選擇*匹配它,但不捕獲它。最後的''是可選的。 – 2010-05-30 14:58:18