我需要一些想法。我有一个包含以下信息的文件:
AAA222BBB% CC333DDDD% EEEE444FF%
'%' sign就像"行尾"
的指示符我想读取每一行,然后解析它以适合某种格式(4个字母,3个数字和4个字母) - 所以如果它看起来像上面那样,它应该插入一个特殊符号或空格来填充,像这样:
AAA-222BBB-% CC - 333DDDD% EEEE444FF - %
我的第一个想法就是将每一行都读成一个字符串。然后是一些巨大的if语句,如
For each line:
{
if (first symbol !abc...xyz) {
insert -
}
if (second symbol !abc...xyz) {
insert -
}
}
但是,我确信必须有更优雅和有效的方法,才能真正解析文本,但我不确定如何。所以,如果有人有个好主意,请赐教: - )
最佳
答案 0 :(得分:1)
我的第一个建议是阅读这篇文章(扫描仪和正则表达式的好解释): 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 - ”