2015-10-19 23 views
-3

我有我需要删除尾随字符的字符串。有几种类型,下面是一些例子:Java子串只保留数字和十进制

“82.882英尺” “101in” “15.993ft³” “10.221毫米”

等。我需要删除长度分隔符,所以我会留下用绳子:

“82.882” “101” “15.993” “10.221”

想法?

+15

我有一个想法:写代码。 – Maroun

+0

我没有看到一个干净的方式来做这个与substring函数。 – ergonaut

+0

1.找到不是数字一部分的第一个字符的索引(只有您可以准确知道数字中允许使用哪些字符)2.将子字符串截至该点 – DJClayworth

回答

1

尝试使用的字符串的replaceAll,指定没有小数点或数字的所有字符:

myString = myString.replaceAll("[^0-9\\.]",""); 

“^ 0-9 \”。意味着所有不是数字0到9的字符或小数。之所以我们放两条斜线是为了避开这段时间,因为它在Java正则表达式中的含义与字面字符'。'不同。

+0

转义'.'里面的字符类实际上是没有必要的 –

0

只需使用正则表达式:

String result = input.replaceAll("[^0-9.]", ""); 
0

正则表达式可能适用于此目的。

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); 
    } 
相关问题