2010-05-25 101 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