将字符串解析为数字

Mat*_*att 16 java generics numbers

我有一个列表,它将存储Number对象.该列表将通过解析字符串列表来填充,其中每个字符串可以表示Number的任何子类.

如何将字符串解析为通用数字,而不是像整数或浮点数那样具体?

And*_*rew 43

Number无法实例化,因为它是一个抽象类.我建议传入Numbers,但如果你在Strings上设置,你可以使用任何子类解析它们,

Number num = Integer.parseInt(myString);
Run Code Online (Sandbox Code Playgroud)

要么

Number num = NumberFormat.getInstance().parse(myNumber);
Run Code Online (Sandbox Code Playgroud)

@See NumberFormat


Dro*_*ona 6

您可以使用java.text.NumberFormat类.该类有一个parse()方法,它解析给定的字符串并返回相应的Number对象.

        public static void main(String args[]){
            List<String> myStrings = new ArrayList<String>(); 
            myStrings.add("11");
            myStrings.add("102.23");
            myStrings.add("22.34");

            NumberFormat nf = NumberFormat.getInstance();
            for( String text : myStrings){
               try {
                    System.out.println( nf.parse(text).getClass().getName() );
               } catch (ParseException e) {
                    e.printStackTrace();
               }
           }
        }
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于国际数字格式,如1'234.56,1,234/56,1 234,56,1 234-56等. (2认同)

小智 5

您可以使用 commons.apache api -> https://commons.apache.org/proper/commons-lang/javadocs/api-3.4/index.htmlNumber获取String

用法:

String value = "234568L";  //long in the form string value
Number number = NumberUtils.createNumber(value);
Run Code Online (Sandbox Code Playgroud)