在输入文件上使用String.split

时间:2014-09-07 15:41:31

标签: java

所以我有一个表格的输入文件:

AdjGraphHeader
11
20
30
.
.
.

我需要创建一个字符串数组,分别保存每一行。所以我使用以下方式阅读文件:

String s = FileUtils.readFileToString(f);
Words w = new Words(s, (long)s.length());

然后单词构造函数执行以下操作:

public Words(String str, long n_) {
    strings = str.split("\\n");
    string = str;
    n = n_;
    m = strings.length;
}

问题似乎是adjGraphHeader末尾有一条额外的行,但我不知道如何摆脱它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我怀疑你的行不是由\n分隔,而是由\r\n分隔,所以如果你移除\n,你仍然会在每个单词后面\r并且在打印它时你会看到空行。解决方案之一可能是使用此正则表达式进行拆分

"\r?\n|\r" - ?使元素在可选之前描述,|代表“或”运算符

如果表单\r \r\n \n

会处理行分隔符。

你也可以使用更简单的东西

List<String> lines = Files.readAllLines(Paths.get("locationOfFile"));

或者您已经拥有File f

List<String> lines = Files.readAllLines(f.toPath());

并将每一行存储在列表中(如果确实需要,可以稍后convert this list to array