我必须将字符串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));
}
}
答案 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]
(缺少非强制性并在那里重复)