我需要一些想法。我有一个包含以下信息的文件:

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 -
    }
}


但是,我确信必须有一种更优雅,更有效的方法来对文本进行真正的解析,但是我不确定如何做。所以,如果有人有个好主意,请启发我:-)

最好

最佳答案

我的第一条建议是阅读其他文章(有关扫描仪和正则表达式的详细说明):
How do I use a delimiter in Java Scanner?

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

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-”

07-26 03:58