我有result
,它是文本或数字值,例如:
String result;
result = "avsds";
result = "123";
result = "345.45";
有时结果还包含逗号:
result = "abc,def";
result = "1,234";
我想删除result
中的逗号,只要它是数字值,而不是简单文本。
解决这个问题的最佳方式是什么?
答案 0 :(得分:2)
这是你的答案:
String regex = "(?<=[\\d])(,)(?=[\\d])";
Pattern p = Pattern.compile(regex);
String str = "Your input";
Matcher m = p.matcher(str);
str = m.replaceAll("");
System.out.println(str);
这只会影响NUMBERS,而不会影响字符串。
尝试在main方法中添加它。或者尝试这个,它接收输入:
String regex = "(?<=[\\d])(,)(?=[\\d])";
Pattern p = Pattern.compile(regex);
System.out.println("Value?: ");
Scanner scanIn = new Scanner(System.in);
String str = scanIn.next();
Matcher m = p.matcher(str);
str = m.replaceAll("");
System.out.println(str);
答案 1 :(得分:1)
最简单的方法是使用两个正则表达式。第一个确保它是数字(类似于[0-9.,]*
),第二个是清除它(result.replaceAll("/,//")
)
答案 2 :(得分:0)
您可以尝试在删除不需要的字符后首先使用任何数字类(Integer,Double等)解析字符串,如果解析成功,那么它是一个数字,您可以从原始字符串中删除不需要的字符
我在这里使用过BigInteger,因为我不确定你的要求的精度。
public static String removeIfNumeric(final String s, final String toRemove) {
final String result;
if (isNumeric(s, toRemove)) {
result = s.replaceAll(toRemove, "");
} else {
result = s;
}
return result;
}
public static boolean isNumeric(final String s, final String toRemoveRegex) {
try {
new BigInteger(s.replaceAll(toRemoveRegex, ""));
return true;
} catch (NumberFormatException e) {
return false;
}
}