字符串标记化器和解析纯文本JAVA

时间:2014-03-02 22:58:49

标签: java parsing text-parsing string-parsing

我正在制作一个简单的基于文本的纸牌游戏,用于解析文件的乐趣/练习。我有一个纯文本文件,其中包含该卡的所有规格。我的卡片用" ##########"分开。它们是多线的。现在我只想随时随地拿出任何一张卡的全部内容。例如,玩家选择角色1,所以我只提取卡1?怎么样?

EXAMPLE: 
##########
CARD 1
Character Name: 
Something Else:
##########
CARD 2
Character Name: 
Something Else:
##########
Character Name: 
Something Else:
##########

我如何实际拆分卡片,因此我只能问卡片的用户。 我不想阅读这些文字并按照我的方式打印。这是相当麻烦和复杂的。 我的新尝试:          ArrayList listForCard1 = new ArrayList();             整数selected_card = 1;

        try {

            String line;
            FileReader fR = new FileReader("MyText.txt");
            BufferedReader br = new BufferedReader(fR);
            int x = 0;
            Integer card = 1;
            while ((line = br.readLine()) != null) {
                ALines[x] = line;
                x++;
                if (line.contains("##########")) {
                    if ( card == selected_card) {
                       listForCard1.add(br.readLine());
                      // System.out.println(br.readLine());
                       break;
                    } else {
                       card++;
                    }
                }

            }
            System.out.println("Done");


            System.out.println(ALines[0]);
            System.out.println(ALines[1]);
            System.out.println(ALines[2]);
            System.out.println(ALines[3]);
            System.out.println(ALines[4]);
            System.out.println(ALines[5]);
            System.out.println(ALines[6]);


        } catch (IOException e) {
            e.printStackTrace();
        } 
}

1 个答案:

答案 0 :(得分:1)

试试这个

        ArrayList<String> listForCard1 = new ArrayList<String>();
    Integer selected_card = 1;

    BufferedReader br = null;   
    try {

        String line;

        br = new BufferedReader(new FileReader("MyText.txt"));
        Integer card = 1;
        while ((line = br.readLine()) != null) {
            if (line.contains("##########")) {
                if ( card == selected_card) {
                   listForCard1.add(br.readLine());
                   listForCard1.add(br.readLine());
                   listForCard1.add(br.readLine());
                   break;
                } else {
                   card++;
                }
            }

        }
        System.out.println("Done");
        for (String s : listForCard1) {
            System.out.println(s);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)
                br.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

通过设置selected_card来选择卡片。我们会计算出当我们看到足够多的#####时我们会读出该卡并停止读取该文件..然后从arraylist中打印出来