我正在使用的 java 数学表达式评估器库需要以0x为前缀的十六进制数字。表达式作为字符串传递。
String expr = "0xAE6+0x22";
但是在输入输入时,我想输入不带0x的数字,然后在它们前面加上前缀。所以我想出了一个想法,在字符串中使用正则表达式提取数字,前缀0x并替换它。
String expr = "AE6+22";
Matcher m = Pattern.compile("[0123456789ABCDEF]{1,}").matcher(expr);
while (m.find())
expr = expr.replace(m.group(), "0x" + m.group());
后来我发现这行不通,因为如果表达式是 say 45+4
,它就会变成0x0x45+0x4
。如何防止它重复替换重复的数字?