Java - 使用整数和字符串解析文本文件

时间:2012-07-30 22:31:37

标签: java

我有一个包含以下内容的文本文件(分隔符是单个空格):

1231 2134 143 wqfdfv -89 rwq f 8 qer q2
sl;akfj salfj 3 sl 123

我的目标是分别读取整数和字符串。一旦我知道如何解析它们,我将创建另一个输出文件来保存它们(但我的问题只是知道如何解析这个文本文件)。

我尝试使用Scanner,但我无法超越第一个inetger:

Scanner s = new Scanner (new File ("a.txt")).useDelimiter("");
while (s.hasNext()){
System.out.print(s.nextInt());}

,输出

1231

我怎样才能从这两行得到其他整数?

我希望的出局是:

1231 
2134 
143
-89
8
3 
123

2 个答案:

答案 0 :(得分:4)

从文件读取数据时,全部读取为字符串类型。然后通过使用Integer.parseInt()解析它来测试它是否为数字。如果它抛出异常,则它是一个字符串,否则它是一个数字。

while (s.hasNext()) {
    String str = s.next();
    try { 
        b = Integer.parseInt(str); 
    } catch (NumberFormatException e) { // only catch specific exception
        // its a string, do what you need to do with it here
        continue;
    }
    // its a number
 } 

答案 1 :(得分:4)

分隔符应该是至少一个空格或更多

的其他东西
Scanner s = new Scanner (new File ("a.txt")).useDelimiter("\\s+");
while (s.hasNext()) {
    if (s.hasNextInt()) { // check if next token is an int
        System.out.print(s.nextInt()); // display the found integer
    } else {
        s.next(); // else read the next token
    }
}

我不得不承认,在这个简单的案例中,来自gotuskar的解决方案更好。