如何在Java字符串数组中查找特定字符的整数值?

时间:2013-06-25 12:23:51

标签: java

我使用以下代码来获取字符串值,如9s或4c,它位于字符串数组中,只找到第一个字符的整数值。我还希望能够将其用于具有多个数字(如10s或13c)的字符串值。

total = total + Integer.parseInt(a[i].substring(0)) + 1;

这给了我一个数字格式例外。我可能做错了什么想法?

4 个答案:

答案 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));