所以我有一个给我的字符串。除了空白外,我已经删除了所有非整数字符。每一行整数的数量各不相同,有些行我会有一行,有时我有两行甚至三行。我现在需要读入每个整数并相应地将它们添加到数组列表中。目前这就是我所拥有的:
while(fileScanner.hasNextLine()){
fileScanner.nextLine();
line=lineReplacer.nextLine();
String line2=line.replaceAll("[a-z]","").replaceAll("[A-Z]","").replaceAll(": ","").replaceAll(" ","").replaceAll(", ", " ");
specs.add(Integer.parseInt(line2));
}
我不知道如何在不知道错误的情况下添加每个int,而不知道有多少int是我当前拥有的行。
编辑:预期值将是诸如2 2 2或12 14 11,或仅10或29 30之类的内容。整数必须保持分离,因为它们需要添加到数组中。输入的唯一限制是它不超过三个整数。
答案 0 :(得分:2)
试试这个:
String line="Hello 12 hi 458 h20 Bye 8";
String line2 = line.replaceAll("\\D+","");
System.out.println(line2);
输出:
12458208
您可以将所有值添加到列表中,如:
for(int i=0;i<line2.length();i++)
{
specs.add(Integer.parseInt(line2.charAt(i)+""));
}
答案 1 :(得分:1)
试试这个:
String line = "ABC 1000,snsdf 987";
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(line);
List<Integer> list = new ArrayList<Integer>();
while (matcher.find()) {
String match = matcher.group();
list.add(Integer.parseInt(match));
}
如果需要,您可以将列表转换为数组:
Integer[] array = new Integer[list.size()];
array = list.toArray(array);
答案 2 :(得分:0)
nextInt
在这种情况下工作正常,它会跳过整数之间的空白区域。试试例如:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner fileScanner = new Scanner("1 2 23 4\n3");
while (fileScanner.hasNextInt()) {
System.out.println(fileScanner.nextInt());
}
}
}
这给出了输出:
1
2
23
4
3