【问题标题】:Java: how to extract a number from a string where the number is a prefix?Java:如何从数字为前缀的字符串中提取数字?
【发布时间】:2013-06-06 22:27:55
【问题描述】:

我需要将字符串转换为数字。问题是字符串是用户输入的,它后面可能有单位,所以数字部分实际上是一个前缀。下面是一些例子:

"8.1 in"
"3.0cm"
"90%"
"4'"

我无法提取号码。 NumberFormat.parse() 看起来很有希望。但是,它具有不稳定的行为。它将“4%”和“4x”解析为 4.0 就好了,但它会在“4'”和“4”上抛出 ParseException(在 Locale.US 中)。

扫描仪看起来也很有希望,但在最后 3 种情况下它失败了,因为我认为数字部分和单位之间没有分隔符。如何可靠地解析浮动直到第一个非法字符,并且无论语言环境如何都正确执行?

【问题讨论】:

    标签: java.util.scanner string-parsing number-formatting


    【解决方案1】:

    您可以使用正则表达式。应该这样做:

    public class NumExtractor {
        public static void main(String args[]) {
            final String EXAMPLE_TEST = "HELLO32This is my small example ";
            String pattern = "\\D";
            System.out.println(EXAMPLE_TEST.replaceAll(pattern, "")); 
        }
    }
    

    上面的代码会输出:

    32
    

    编辑:我刚刚意识到您希望输出为数字。这是一个修订:

    public class NumExtractor {
        public static void main(String args[]) {
            final String EXAMPLE_TEST = "HELLO32This is my small example ";
            String pattern = "\\D";
            double number = Double.parseDouble(EXAMPLE_TEST.replaceAll(pattern, ""));
            System.out.println(number); 
        }
    }
    

    如果数字中有小数位,则解析为双精度数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多