0

下面的代码是我尝试从字符串文件中读取,通读每一行直到找到':'然后存储+打印之后的所有内容。但是,打印功能会打印出我从文件中读取的所有内容。有人能发现我哪里出错了吗?谢谢

编辑:每一行都是这种格式“这里有一些文字:这里有更多文字”

public void openFile() {

        try {
            scanner = new BufferedReader(new FileReader("calendar.ics"));
        } catch (Exception e) {
            System.out.println("Could not open file");

        }

    }

    public void readFile() {
        ArrayList<String> vals = new ArrayList<String>();
        String test;

        try {
        while ((line = scanner.readLine()) != null)
        {

        int indexOfComma = line.indexOf("\\:"); // returns firstIndexOf ':'
        test = line.substring(indexOfComma+1);  // test to be everything after ':'
        vals.add(test);  // add values to vals
        }
        }  catch(Exception ex){ }

            for(int i=0; i<vals.size(); i++){
         System.out.println(vals.get(i));
    }
    } 
4

1 回答 1

4

你不需要逃避你的结肠。

line.indexOf("\\:");

将上面的行更改为: -

line.indexOf(":"); 

因为,那将搜索\\:,如果没有找到则返回 value -1

test = line.substring(indexOfComma+1); 

所以,如果你的indexCommais -1,肯定会是,如果你的字符串不包含 - \\:,那么你上面的行变成: -

line.substring(0);  // same as whole string

作为建议,您应该在声明列表时将抽象类型作为引用类型。因此,您应该在声明的 LHS 上使用List而不是:-ArrayListList

List<String> vals = new ArrayList<String>();
于 2012-11-24T20:14:40.480 回答