2

我有一个像30+20%. 现在我想20%(20/100). 就是这样。

4

6 回答 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 回答