我是java新手,但仍然不能做一件可能对我来说很简单的事情
我有一个包含特定数据的文件,我使用正则表达式将其提取到我的程序中,并获得以下字符串列表:
<X=33><Y=1642>02313
<X=33><Y=1717>03094
<X=33><Y=1792>07202
<X=467><Y=1642>Sp 1
<X=467><Y=1717>He L
<X=467><Y=1792>En 9 H
<X=1217><Y=1642>A
<X=1217><Y=1792>B
<X=1217><Y=1717>B
正如您在此处所见,模式很明显,x是列y是一行,其余是要在此单元格中设置的数据。 我需要像这样放置所有这些数据
<X=33><Y=1642>02313 <X=467><Y=1642>Sp 1 <X=1217><Y=1642>A
<X=33><Y=1717>03094 <X=467><Y=1717>He L <X=1217><Y=1792>B
<X=33><Y=1792>07202 <X=467><Y=1792>En 9 H <X=1217><Y=1717>B
我该怎么做?我可以使用哪些工具? 我认为有可能在循环检查中检查每个字符串是否为模式x = \ d {2,4}和y = \ d {4}并与之前的字符串进行比较,如果匹配,则使用某个分隔符将此sting添加到previous像昏迷,但我不知道该使用什么......
请帮忙!!!我会很感激任何想法!
到目前为止我的代码看起来像这样public class FileExtractor {
List<String> list = new ArrayList<String>();
public void extractFile() throws Exception{
BufferedReader reader = new BufferedReader(new FileReader("src/student_info_v2.txt"));
String text = "";
String line = reader.readLine();
while (line != null){
text += line;
line = reader.readLine();
}
String patt1[] = {"<X=33><Y=\\d{4}>\\d{5}", "<X=1725><Y=\\d{4}>\\d{5}",
"<X=467><Y=\\d{4}>[A-Za-z/&.0-9 ]{3,18}", "<X=2175><Y=\\d{4}>[A-Za-z/&.0-9 ]{3,18}",
"<X=1217><Y=\\d{4}>[ABC]", "<X=2917><Y=\\d{4}>[ABC]"};
for(int i=0; i<patt1.length; i++){
Pattern pattern = Pattern.compile(patt1[i]);
Matcher match = pattern.matcher(text);
while(match.find()){
String lines = match.group();
list.add(lines);
//System.out.println(lines.substring(14));
String patt2[] = {"<X=", "><Y="};
for(int f=0; f<patt2.length; f++){
Pattern replace = Pattern.compile(patt2[f]);
Matcher match2 = replace.matcher(lines);
}
while(match.find()){
String stripped = match.replaceAll(" ");
System.out.println(stripped);
}
}
}
reader.close();
}
}