十进制格式错误

时间:2015-10-12 06:56:47

标签: java

我必须将字符串welcome转换为数字格式。但是当我要执行它时抛出异常

Exception in thread "main" java.text.ParseException: Unparseable number: "Welcome"
    at java.text.NumberFormat.parse(Unknown Source)
    at sample.Sam.main(Sam.java:13)

包装样品;

import java.text.DecimalFormat;
import java.text.ParseException;

public class Sam {

    public static void main(String[] args) throws ParseException {
        // TODO Auto-generated method stub
            String str="Welcome,@123";
            DecimalFormat df = new DecimalFormat(str);

            System.out.println( df.parse(str));

    }

}

3 个答案:

答案 0 :(得分:1)

您共享的代码不会抛出您复制的异常...

无论如何,这是一个从任何字符串中提取整数的代码:

        String str="Welcome,@123";
        Pattern p = Pattern.compile( "\\D*(\\d+)\\D*" );
        Matcher m = p.matcher(str);
        if ( m.matches() )
        {
            int value = Integer.parseInt( m.group(1) );
            System.out.println( value );
        }
        else
        {
            System.out.println("no number found");
        }

答案 1 :(得分:1)

您需要首先使用一个有效DecimalFormat pattern的字符串声明格式,然后您可以解析实际字符串:

String pattern = "'Welcome,@'0"; //0 is a placeholder, see the link for the others
DecimalFormat df = new DecimalFormat(pattern);

String input = "Welcome,@123";
System.out.println(df.parse(input)); //prints 123

由于,也是placeholder,我不得不引用文字'Welcome,@'

答案 2 :(得分:0)

一切皆有可能,但...... 在这种情况下,你必须找到该字符串的数字,看看this

String s = "...stuff...";

    for (int i = 0; i < s.length(); i++){
        char c = s.charAt(i);        
        //Process char
    }

要识别char是否可以使用that

Character.isDigit(string.charAt(0))

类似于:

String s = "..ag123";
String numStr = "";
    for (int i = 0; i < s.length(); i++){
        char c = s.charAt(i);        
        if(Character.isDigit(s.charAt(i))){
              numStr += s.charAt(i);
         }
    }
 Integer.parseInt(numStr); 
  

对于demimal,你还必须识别小数(也许还有数千?)分隔符:)但是这样的东西..

顺便说一下你仍然可以使用十进制格式化程序,但是你需要为它设置模式(不确定它是否可能像字符串模式) - 你无法在doc找到它,我不是当然,但它会像[^0123456789][123456789][separators][0123456789][^0123456789](缺少非强制性并在那里重复)