我使用以下代码来获取字符串值,如9s或4c,它位于字符串数组中,只找到第一个字符的整数值。我还希望能够将其用于具有多个数字(如10s或13c)的字符串值。
total = total + Integer.parseInt(a[i].substring(0)) + 1;
这给了我一个数字格式例外。我可能做错了什么想法?
答案 0 :(得分:5)
这将有效
public static void getIntVal() {
String text = "123cc";
String numOnly = text.replaceAll("\\D+", "");
int numVal = Integer.valueOf(numOnly);
System.out.println(numVal);
}
如果某人想要使用双倍,你可以按照以下方式使用
String text = "123.0114cc";
String numOnly = text.replaceAll("\\p{Alpha}","");
double numVal = Double.valueOf(numOnly);
System.out.println(numVal);
答案 1 :(得分:4)
str.substring(0)
再次只是str
(请阅读docs)。你可能正在寻找
a[i].substring(0, a[i].length() - 1) // cuts off last character
答案 2 :(得分:1)
Ruchira的解决方案规定删除非数字字符;在你的设置似乎正确。但是,如果数字为浮点数或加倍shreyansh jogi
个问题,则她的解决方案无效。
正确实施Ruchira的思维解决方案,这将解决您的问题...
String text = "123.0121cc";
String numOnly = text.replaceAll("\\p{Alpha}", "");
如果您知道会发生什么,请说double
:
double numVal = Double.valueOf(numOnly);
的System.out.println(numVal);
否则..如果您不知道文本的其余部分是integer
还是double
,这会对您有所帮助:
if(numOnly.contains(".")) {
double numVal = Double.valueOf(numOnly);
System.out.println(numVal);
} else {
int numVal = Integer.valueOf(numOnly);
System.out.println(numVal);
}
答案 3 :(得分:0)
total = total + Integer.parseInt(a[i].substring(0,a[i].length()-1));