3

我正在尝试使用 Scanner 类读取一行,使用 next(Pattern pattern) 方法捕获冒号之前和冒号之后的文本,以便 s1 = textbeforecolon 和 s2 = textaftercolon。

该行如下所示:

东西:别的东西

4

3 回答 3

10

有两种方法可以做到这一点,具体取决于您想要什么。

如果你想用冒号分割整个输入,那么你可以使用该useDelimiter()方法,就像其他人指出的那样:

// You could also say "scanner.useDelimiter(Pattern.compile(":"))", but
// that's the exact same thing as saying "scanner.useDelimiter(":")".
scanner.useDelimiter(":");

// Examines each token one at a time
while (scanner.hasNext())
{
    String token = scanner.next();
    // Do something with token here...
}

String如果你想用冒号分隔每一行,那么使用'ssplit()方法会容易得多:

while (scanner.hasNextLine())
{
    String[] parts = scanner.nextLine().split(":");
    // The parts array now contains ["something", "somethingelse"]
}
于 2009-05-09T03:03:06.697 回答
0

我从来没有在扫描仪上使用过 Pattern。

我一直只是用字符串更改分隔符。 http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#useDelimiter(java.lang.String)

于 2009-05-09T02:49:53.140 回答
0
File file = new File("someFileWithLinesContainingYourExampleText.txt");
Scanner s = new Scanner(file);
s.useDelimiter(":");

while (!s.hasNextLine()) {
    while (s.hasNext()) {
        String text = s.next();
    System.out.println(text);
    }

    s.nextLine();
}
于 2009-05-09T02:50:22.763 回答