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