Android扫描仪分隔符问题

时间:2011-01-27 18:09:59

标签: android string text java.util.scanner delimiter

好的,前几天我在使用FileWriter注意换行时遇到了麻烦,但我得到了一些帮助并解决了它。现在,就像以前一样,我用一些旧的代码(在旧的程序中完美地工作)来读取所写的文件。我用“|”作为分隔符(pieces.useDelimiter(“|”);)。当我调用pieces.next()时,它只会删除下一个字符,而不是下一个字符串直到分隔符。我错过了什么? 代码段:

try{
    mFile = new Scanner(newFile(loadPath));
    while(mFile.hasNextLine()){
        String input = mFile.nextLine();
        Scanner pieces = new Scanner(input);
        pieces.useDelimiter("|");
        while(pieces.hasNext()){
            int row = Integer.valueOf(pieces.next());
            int col = Integer.valueOf(pieces.next());
            String pullPath = pieces.next();
            ......

}}

1 个答案:

答案 0 :(得分:0)

传递给useDelimiter的String被解释为正则表达式。 |是正则表达式中的特殊字符,因此您必须使用反斜杠转义它。并且反斜杠本身需要被转义,以便通过Java编译器。因此,如下更改该行应该可以解决问题:

    pieces.useDelimiter("\\|");

另请注意,pieces.next()返回的字符串包含分隔符。我怀疑这些界限:

        int row = Integer.valueOf(pieces.next());
        int col = Integer.valueOf(pieces.next());

可以替换为:

        int row = pieces.nextInt();
        int col = pieces.nextInt();

您可能还需要调整pullPath来修剪分隔符。

我希望这会有所帮助。