有一个字符串(任何字符串)。它可能不包含数字;
如何将该数组中包含的整数存储到ArrayList中。
试图
public ArrayList<Integer> toList() {
String stringToList;
ArrayList<Integer> l = new ArrayList<>();
stringToList = this.toString(); // I am just copying the string from the object
for (int i = 0; i < stringToList.length(); i++) {
if(((Integer) stringToList.charAt(i)) instanceof Integer){
//Here store it into the arrayList
}
}
return l;
}
但显然它不起作用,因为演员不是解决方案。有任何想法吗?感谢。
答案 0 :(得分:2)
由于字符串中可能存在12
,因此您无法直接使用charAt()
。您可以将stringToList
与,
分开,然后使用Integer.parseInt()
public ArrayList<Integer> toList() {
String stringToList;
ArrayList<Integer> l = new ArrayList<>();
stringToList = this.toString(); // I am just copying the string from the object
String[] strings = stringToList.split(",\\s+");
for (int i = 0; i < strings.length; i++) {
try {
l.add(Integer.parseInt(strings[i]));
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
return l;
}
答案 1 :(得分:1)
您可以拆分字符串,例如
String[] splits = stringToList.split(",");
使用Integer.parseInt(splits[0]);
之类的东西将它们转换为整数,并将它们存储在ArrayList
答案 2 :(得分:1)
代码示例: (Execution)
^(?=(?:[^-]*-){4}[^-]*$)(?=(?:\D*\d){13}\D*$).*$
描述:[^ - ?0-9] +
+在一次和无限次之间,尽可能多次,根据需要回馈
- ?其中一个字符是“ - ?”
0-9“0”和“9”之间范围内的字符
答案 3 :(得分:0)
您可以使用Character.isDigit方法检查字符是否为数字。
if (Character.isDigit(stringToList.charAt(0))){
l.add((int)stringToList.charAt(0));
}
在添加到整数的arraylist之前,将char转换为int。
答案 4 :(得分:0)
解析,检查,转换,以一行方式收集:
此解决方案可以解析任何String
,因为它会在转换为Integer
之前检查从拆分中获取的每个部分仅由数字组成(或者之前是减号)
String str = "1 , 2, 2a, 3, -14, b55";
List<Integer> list = Arrays.stream(str.split(","))
.map(String::trim)
.filter(s -> s.matches(""-?\\d+""))
.map(Integer::valueOf)
.collect(Collectors.toList());
System.out.println(list); // list : [1, 2, 3, -14]
String
Stream
spaces
周围的<{li}
Integer
List
答案 5 :(得分:0)
如果您使用的是Java 8,则可以尝试以下操作:
public ArrayList<Integer> toList(String input) {
return Arrays.stream(input.split(","))
.map(String::trim)
.filter(s -> s.matches("\\b\\d+\\b"))
.map(Integer::valueOf)
.collect(Collectors.toCollection(ArrayList::new));
}