我正在使用以下代码获取位于字符串数组中的字符串值(如 9s 或 4c),并仅找到第一个字符的整数值。我还希望能够将其用于具有多个数字(如 10s 或 13c)的字符串值。
total = total + Integer.parseInt(a[i].substring(0)) + 1;
这给了我一个数字格式异常。有什么想法我可能做错了吗?
我正在使用以下代码获取位于字符串数组中的字符串值(如 9s 或 4c),并仅找到第一个字符的整数值。我还希望能够将其用于具有多个数字(如 10s 或 13c)的字符串值。
total = total + Integer.parseInt(a[i].substring(0)) + 1;
这给了我一个数字格式异常。有什么想法我可能做错了吗?
这将起作用
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);
str.substring(0)
又是str
一次(阅读文档)。您可能正在寻找
a[i].substring(0, a[i].length() - 1) // cuts off last character
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);
}
total = total + Integer.parseInt(a[i].substring(0,a[i].length()-1));