从特定值列创建表

时间:2013-04-12 07:30:34

标签: java arrays string compare

我是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();
    }
}

0 个答案:

没有答案