Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java子字符串只保留数字和小数_Java_String - Fatal编程技术网

Java子字符串只保留数字和小数

Java子字符串只保留数字和小数,java,string,Java,String,我有一些字符串需要从中删除尾随字符。有几种类型,以下是一些示例: “82.882ft” “101英寸” “15.993立方英尺” “10.221mm” 等等。我需要删除长度分隔符,以便留下字符串: “82.882” "101" "15.993" “10.221” 想法?只需使用正则表达式: String result = input.replaceAll("[^0-9.]", ""); 尝试在字符串上使用replaceAll,指定所有非小数点或数字的字符: myString = myStrin

我有一些字符串需要从中删除尾随字符。有几种类型,以下是一些示例:

“82.882ft” “101英寸” “15.993立方英尺” “10.221mm”

等等。我需要删除长度分隔符,以便留下字符串:

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

想法?

只需使用正则表达式:

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

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

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

“^0-9”表示不是数字0到9或十进制的所有字符。我们之所以使用两个斜杠是为了避开句点,因为它在Java正则表达式中的含义与文字字符“.”不同。

正则表达式可能最适合这种情况

    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);
    }

我有一个想法:编写代码。我看不到一个干净的方法来使用子字符串函数实现这一点。1。查找不属于数字的第一个字符的索引(只有您才能确切知道数字中允许使用哪些字符)。把子字符串带到那个点,因为另一个答案的标题只说“非数字字符”,它没有指定它包含句点(非数字),因此我认为它不一样。仔细看,它们确实包含句点。实际上,在字符类中转义
是不必要的