首页 > 解决方案 > 将属性分配给文本文件中的字符串

问题描述

希望我的解释能给我一些公正。我对java很陌生。我有一个看起来像这样的文本文件

Java
The Java Tutorials
http://docs.oracle.com/javase/tutorial/
Python
Tutorialspoint Java tutorials
http://www.tutorialspoint.com/python/
Perl
Tutorialspoint Perl tutorials
http://www.tutorialspoint.com/perl/

我有语言名称、网站描述和网站 url 的属性。现在,我只想准确地列出文本文件中的信息,但我需要将这些属性分配给它们。

我遇到的问题是“索引 1 超出长度 1 的范围”

try {
        BufferedReader in = new BufferedReader(new FileReader("Tutorials.txt"));

        while (in.readLine() != null) {
            TutorialWebsite tw = new TutorialWebsite();
            str = in.readLine();
            String[] fields = str.split("\\r?\\n");
            tw.setProgramLanguage(fields[0]);
            tw.setWebDescription(fields[1]);
            tw.setWebURL(fields[2]);
            System.out.println(tw);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

我想测试一些东西,所以我删除了新行并用逗号代替,并将它的 str.split(",") 打印出来就好了,但我确定我会得到分数,我改变了格式。

标签: javaregex

解决方案


readline返回一个“包含行内容的字符串,不包括任何行终止字符”,那么你为什么要在 上分割每一行"\\r?\\n"

在哪里str声明?你为什么要为循环的每次迭代读取两行,而忽略第一行?

我建议你从

String str;
while ((str = in.readLine()) != null) {
    System.out.println(str);
}

并从那里工作。

第一个readline获取语言,第二个获取描述,第三个获取 url,然后模式重复。对于 while 循环的每次迭代,没有什么可以阻止您使用readline3 次。


推荐阅读