Java:解析文件中的行

我需要一些想法。 我有一个这样的信息的文件:

AAA222BBB%CC333DDDD%EEEE444FF%

'%'符号就像是“行尾”的指示符

我想阅读每一行,然后解析它以适应某种格式(再次使用4个字母,3个数字和4个字母) - 因此,如果看起来像上面那样,它应该插入一个特殊符号或空格来填充,就像这样:

AAA-222BBB-%CC - 333DDDD%EEEE444FF - %

我的第一个直接的想法是将每一行读作一个字符串。 然后是一些巨大的if语句,像是说

For each line:
{
    if (first symbol !abc...xyz) {
        insert -
    }

    if (second symbol !abc...xyz) {
        insert -
    }
}

不过,我相信肯定有一种更优雅有效的方式,去做一个真正的文本解析,但我不知道如何。 所以,如果有人有一个好主意,请赐教:-)

最好


我的第一个建议是阅读这篇文章(对扫描器和正则表达式的很好的解释):如何在Java扫描器中使用分隔符?

然后我的解决方案(确保它是最聪明的,但它应该工作)

For each line:
{
    Scanner scan = new Scanner(line);
    scan.useDelimiter(Pattern.compile("[0-9]"));
    String first = scan.next();

    scan.useDelimiter(Pattern.compile("[A-Z]"));
    String second = scan.next();

    scan.useDelimiter(Pattern.compile("[0-9]"));
    String third = scan.next();

    scan.close();

    System.out.println(addMissingNumber(first, 4) + addMissingNumber(second, 3) + addMissingNumber(third, 4));
}

 //For each missing char add "-"
 private static String addMissingNumber(String word, int size) {
    while (word.length() < size) {
        word = word.concat("-");
    }
    return word;
 }

输出:“ AAA-222BBB-

链接地址: http://www.djcxy.com/p/78349.html

上一篇: Java: Parse lines from files

下一篇: Using Delimiter not removing special character