我有我需要删除尾随字符的字符串。有几种类型,下面是一些例子:Java子串只保留数字和十进制
“82.882英尺” “101in” “15.993ft³” “10.221毫米”
等。我需要删除长度分隔符,所以我会留下用绳子:
“82.882” “101” “15.993” “10.221”
想法?
我有我需要删除尾随字符的字符串。有几种类型,下面是一些例子:Java子串只保留数字和十进制
“82.882英尺” “101in” “15.993ft³” “10.221毫米”
等。我需要删除长度分隔符,所以我会留下用绳子:
“82.882” “101” “15.993” “10.221”
想法?
尝试使用的字符串的replaceAll,指定没有小数点或数字的所有字符:
myString = myString.replaceAll("[^0-9\\.]","");
“^ 0-9 \”。意味着所有不是数字0到9的字符或小数。之所以我们放两条斜线是为了避开这段时间,因为它在Java正则表达式中的含义与字面字符'。'不同。
转义'.'里面的字符类实际上是没有必要的 –
只需使用正则表达式:
String result = input.replaceAll("[^0-9.]", "");
正则表达式可能适用于此目的。
Pattern lp = Pattern.compile("([\\d.]+)(.*)");
// Optional cleanup using Apache Commons StringUtils
currentInput = StringUtils.upperCase(
StringUtils.deleteWhitespace(currentInput));
Matcher lpm = lp.matcher(currentInput);
if(lpm.matches())
{
// Values
String value = lpm.group(1);
// And the trailing chars for further processing
String measure = lpm.group(2);
}
我有一个想法:写代码。 – Maroun
我没有看到一个干净的方式来做这个与substring函数。 – ergonaut
1.找到不是数字一部分的第一个字符的索引(只有您可以准确知道数字中允许使用哪些字符)2.将子字符串截至该点 – DJClayworth