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

===============>>#1 票数:5 已采纳

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

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

例如:

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

===============>>#2 票数:2

让API来完成这项工作,从而实现以下简单的一线式:

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

说明:

===============>>#3 票数:0

您可以使用java.util.String拆分方法如果您有一个String,其子字符串由一个标记分隔:

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

如果这不是您想要的,则可以通过逐个字符地遍历String来遍历细节:

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

===============>>#4 票数: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的第一个非空数字字符串。

  ask by awfulwaffle translate from so

未解决问题?本站智能推荐: