我需要一些想法。我有一个包含以下信息的文件:
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-”