java - 我们可以在没有循环语句的情况下计算字符串中的数字表达式(通过正则表达式)吗?

标签 java regex string

JDK 7。 正则表达式处理 str1 并获取所有内部数字的平方的方法是什么?

String str1="ab cd 2 4 ef 12x";
...
System.out.println(str1.replaceAll("...", "...")); 

我们可以将控制台输出为

ab cd 4 16 ef 144x 

不使用循环?

也许它是如此复杂或不可能......不幸的是,我不知道。 预先感谢您。

最佳答案

不可能在一次或两次 replaceAll 调用中做到这一点,因为无法即时计算匹配的子字符串(您可以在 Perl 中执行此操作,但不能在 Java 中执行此操作)。

因此,正如我提到的,解决方法是在循环中使用 Matcher#appendReplacement

查看sample demo :

String s = "ab cd 2 4 ef 12x";
StringBuffer result = new StringBuffer();
Matcher m = Pattern.compile("\\d+").matcher(s);
while (m.find()) {
    m.appendReplacement(result,
      String.valueOf((int)Math.pow(Double.parseDouble(m.group(0)), 2))); // Calculate
}
m.appendTail(result);
System.out.println(result.toString());

关于java - 我们可以在没有循环语句的情况下计算字符串中的数字表达式(通过正则表达式)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35698073/

相关文章:

python - 将长字符串转换为矩阵,并对其进行清理

python - 在 SQLite (Python) 中将变量字符串传递给 LIKE

java - 单击 JFrame 中的按钮将数据传递到 JPanel

java - 如何自动更新 SharedPreferences 变量?

javascript - 正则表达式与方程中的数字不匹配

javascript - 使用 Regex 正/负前瞻替换字符?

javascript - 使用 JavaScript 查找电话号码并提供链接

python - 为什么 dtype=str 的空 DataFrame 填充了 "n"?

java - GridBagLayout:面板延伸到其他面板之上

java - 如何在Java中组合enum、switch和instanceof