Java 我们可以在没有循环语句的情况下(通过正则表达式)计算字符串中的数字表达式吗?
jdk7。 什么是正则表达式处理str1并得到所有内部数字平方的方法Java 我们可以在没有循环语句的情况下(通过正则表达式)计算字符串中的数字表达式吗?,java,regex,string,Java,Regex,String,jdk7。 什么是正则表达式处理str1并得到所有内部数字平方的方法 String str1="ab cd 2 4 ef 12x"; ... System.out.println(str1.replaceAll("...", "...")); 我们能把控制台拿出来吗 ab cd 4 16 ef 144x 没有循环使用 也许它如此复杂或不可能。。。不幸的是,我不知道。 提前谢谢。我有一个关于循环的解决方案,也许它能帮助您找到其他解决方案 String str="ab cd 2 4 ef 1
String str1="ab cd 2 4 ef 12x";
...
System.out.println(str1.replaceAll("...", "..."));
我们能把控制台拿出来吗
ab cd 4 16 ef 144x
没有循环使用
也许它如此复杂或不可能。。。不幸的是,我不知道。
提前谢谢。我有一个关于循环的解决方案,也许它能帮助您找到其他解决方案
String str="ab cd 2 4 ef 12x";
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(Math.pow(Integer.parseInt(m.group(1)), 2));
}
输出:
4
16
144.0我有一个带循环的解决方案,它可能会帮助您找到其他解决方案
String str="ab cd 2 4 ef 12x";
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(Math.pow(Integer.parseInt(m.group(1)), 2));
}
输出:
4
16
144.0在一个
replaceAll
调用中,甚至在两个调用中,都不可能做到这一点,因为匹配的子字符串不能动态求值(可以用Perl,但不能用Java)
因此,正如我所提到的,一种解决方法是在循环中使用Matcher#appendReplacement
见a:
在一个
replaceAll
调用中,甚至在两个调用中都不可能做到这一点,因为匹配的子字符串不能在运行时进行计算(可以在Perl中进行计算,但不能在Java中进行计算)
因此,正如我所提到的,一种解决方法是在循环中使用Matcher#appendReplacement
见a:
regex是关于模式匹配和字符串替换的,而不是计算。这不是Perl中有
/e
修饰符的地方。用匹配数字的正则表达式使用Matcher#appendReplacement
,并在while(m.find())
块中执行计算。您可以使用Streams API对所有单词/数字进行解码,对数字进行平方运算并将结果字符串连接起来。这并不构成“在字符串中计算数字表达式”。它包括在字符串中查找数字并对其应用固定的计算。regex是关于模式匹配和字符串替换,而不是计算。这不是Perl中有/e
修饰符的地方。用匹配数字的正则表达式使用Matcher#appendReplacement
,并在while(m.find())
块中执行计算。您可以使用Streams API对所有单词/数字进行解码,对数字进行平方运算并将结果字符串连接起来。这并不构成“在字符串中计算数字表达式”。它包括在字符串中查找数字并对其应用固定计算。