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

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

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

如果您有一个字符串,其子字符串由标记分隔,则可以使用java.util.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.
}
for(int i=0;i
如果它可以是任何字符(一个或多个),那么这可能会有帮助:

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


让API来完成这项工作,从而实现这个简单的单行程序:

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

  • 将所有非数字替换为空白,这将有效地删除所有非数字,只留下数字字符
  • 将结果(仅数字)传递到
试试这个:

Integer findNumber(String s){
 List<String> num = Arrays.asList(s.split("[^0-9]"));
 for(String n : num) if(!n.isEmpty()) return Integer.parseInt(n);
}
整数findNumber(字符串s){
List num=Arrays.asList(s.split(“[^0-9]”);
for(字符串n:num)如果(!n.isEmpty())返回Integer.parseInt(n);
}
第一行围绕匹配非数字字符的部分拆分
s


然后,第二行在
列表中找到第一个非空的数字字符串

您的问题不清楚。请举例说明需要解析的输入,
Integer.parseInt()
无法解析。23dfasf22323dfddfa223应该解析2322323和22323第二个基本上就是我想做的。理论上,如果我使用string.replaceAll(“[^0-9]”,“”),然后使用您对split方法的建议,我就可以这样做,对吗?如果数字中有多个非数字字符,这是否可行?举例来说,如果我尝试拆分123.2223…33.3来获得123、2223、33和3?哦,该死,这正是我需要的。不知道string.split可以将正则表达式作为参数。非常感谢!编辑:几乎是我需要的,我需要一个整数数组,而不是字符串。不管怎样,我想我能从这里处理好。再次感谢!
int i = Integer.parseInt(input.replaceAll("\\D", ""));
Integer findNumber(String s){
 List<String> num = Arrays.asList(s.split("[^0-9]"));
 for(String n : num) if(!n.isEmpty()) return Integer.parseInt(n);
}