首页 > 解决方案 > 如何用单个值替换出现的数字?

问题描述

我有以下代码

String str = "/admin/3138/misc";
boolean isNumbers = str.chars().anyMatch(Character::isDigit);
System.out.println(isNumbers);
if (isNumbers) {
    str = str.replaceAll("[0-9]", "%d");
    System.out.println("->" + str);
}

这给出了输出:

admin/%d%d%d%d/misc

我需要:

admin/%d/misc

因此,如果找到的数字只替换为%d一个,而不是每个数字,则从字符串中替换。

标签: javaregexstringreplace

解决方案


您需要将您的正则表达式更改为"[0-9]+"

if (isNumbers) {
    str = str.replaceAll("[0-9]+", "%d");
    System.out.println("->" + str);
}

Oracle 的文档:量词


推荐阅读