【发布时间】:2018-12-17 21:38:12
【问题描述】:
我想从下面的字符串中替换数字 123,但我面临的挑战是 - 每次我替换它时,数字,即名称“Xyz1”中的 1 也发生了变化。以下是我已经尝试过的示例代码:
import java.util.*;
import java.lang.*;
import java.io.*;
class NumberToString
{
public static void main (String[] args) throws java.lang.Exception
{
String str = "Hello Xyz1, your id is 123";
// str = str.replaceAll("[0-9]","idNew");
// str = str.replaceAll("\\d","idNew");
// str = str.replaceAll("\\d+","idNew");
str = str.replaceAll("(?>-?\\d+(?:[\\./]\\d+)?)","idNew");
System.out.println(str);
}
}
上述代码的输出是: 你好XyzidNew,你的id是idNew
但是,我需要的输出是: 你好Xyz1,你的id是idNew
【问题讨论】:
-
Xyz1可以包含多少个数字,id 是多长? -
使用单词边界,
"(?>-?\\b\\d+(?:[\\./]\\d+)?)\\b"或更简单的"-?\\b\\d+(?:[./]\\d+)?\\b" -
Xyz1 最多可以包含 7 个数字,id 的最大长度为 10。