我有一个像30+20%
. 现在我想20%
用(20/100)
. 就是这样。
问问题
2605 次
6 回答
11
如果百分比没有出现在字符串中的任何其他情况下,您甚至不需要正则表达式:
s = s.Replace("%", "/100");
要添加括号,您需要正则表达式:
s = Regex.Replace(s, @"(\d{1,3})%", "($1/100)");
于 2012-06-01T07:46:33.897 回答
3
string s="30+20%";
s=s.Replace("%","/100)");
s=s.Replace("+","+(");
于 2012-06-01T07:46:18.493 回答
3
我只是假设你运行 Perl
input="30+20%"
echo $input | perl -pe 's#(\d+)%#\($1/100\)#g'
编辑:只需阅读标签,无论如何,正则表达式应该在 C# 中工作
于 2012-06-01T07:46:49.910 回答
1
这应该是一个容易尝试的正则表达式。1 到 3 位数字,后跟百分号。您需要捕获 1-3 位数字组以进行反向引用,并使用它来创建 (DIGITS/100) 字符串。你可以在这里玩:http://gskinner.com/RegExr/ 来学习正则表达式。
于 2012-06-01T07:46:01.680 回答
1
我不确定您使用的是哪种编程语言,但这就是您在 python 中执行此操作的方式:
import re
re.sub(r'(\d*)%', r'\1/100', '30+20%')
返回的字符串将为“30+20/100”。
说明:让我们看一下正则表达式。r'\d*%' 是匹配一系列数字后跟 % 符号的正则表达式。我用括号 (\d*) 告诉正则表达式编译器数字系列(也就是数字)是第一组。第二个参数告诉子函数如何替换匹配的字符串。参数 '\1/100' 告诉子函数我希望它用正则表达式(通过 \1 部分)匹配的第一组的值替换匹配的字符串,然后是 /100。
您可以查看python re 模块以获取更多信息。
于 2012-06-01T07:55:10.140 回答
1
试试这个
string resultString = null;
try {
resultString = Regex.Replace(subjectString, @"\b(\d+)%", "($1/100)");
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
于 2012-06-01T08:05:07.493 回答