如何从字符串中解析多位整数

时间:2011-12-11 20:33:27

标签: java parsing int

我正在这里进行分配,其中一部分要求我从一个字符串解析整数,该字符串由任何其他字符分隔的数字组。我知道我可以使用包装器类方法Integer.parseInt(string)从只包含数字的字符串中解析int,但在这种情况下我该怎么做呢?到目前为止,我已经考虑过对字符串进行线性搜索并将变量分配给第一个索引,其中出现一个数字,最后一个数字后面的索引出现,并根据这些索引创建一个临时子字符串,从中解析int。这是一种有效的方法吗?也许有一个更有效率的?

4 个答案:

答案 0 :(得分:5)

如果它可以是任何字符(一个或多个),那么这可能会有所帮助:

String[] aarray = str.split("[^\\d]+");

E.g:

String str = "12fdvvsd34.;h56s67.45c56";
String[] aarray = str.split("[^\\d]+");

for(int i = 0; i < aarray.length; i++)
    System.out.println(Integer.parseInt(aarray[i]));

输出:

12
34
56
67
45
56

答案 1 :(得分:2)

让API完成工作,导致这个简单的单行:

int i = Integer.parseInt(input.replaceAll("\\D", ""));

说明:

答案 2 :(得分:0)

你可以使用java.util.String split方法如果你有一个带有由标记分隔的子串的String:

String data "123.345.55.66";
String [] fields = data.split(".");

如果那不是你想要的,你可以通过循环遍历字符串字符来扼杀细节:

for (int i = 0; i < data.size(); ++i) {
    char c = data.charAt(i);
    // manipulate as needed.
}

答案 3 :(得分:0)

试试这个:

Integer findNumber(String s){
 List<String> num = Arrays.asList(s.split("[^0-9]"));
 for(String n : num) if(!n.isEmpty()) return Integer.parseInt(n);
}

第一行将s拆分为与非数字字符匹配的部分。

然后第二行找到List中的第一个非空数字字符串。