正则表达式和新行

时间:2017-03-08 03:29:42

标签: java regex input

我正在尝试将随机file.txt划分为String[]。该文本来自Gutenberg.org并且有许多新行。

示例:

  

亚伯拉罕林肯的林肯快报项目古腾堡电子书

     

这本电子书可供任何人免费使用   几乎没有任何限制。你可以复制,赠送或   根据项目Gutenberg许可证的条款重新使用它   使用此电子书或在线访问www.gutenberg.org

     

标题:林肯信件

输出对于每个单词都是正确的,但对于结束段落和开始段落的单词不是。

例如," Lincolnhis"这是"林肯"的组合。和"这个"但被视为一个字。相反,我想拥有"林肯"和"这"。

token = word.split("\\s|\\.|\\,");这是我用来分割文本文件的正则表达式。请帮忙。

以下是我用来输入文本文件的代码:

    FileReader fr = new FileReader("C:\\Users\\Petr Holoubek\\Desktop\\hello world.txt");
    BufferedReader br = new BufferedReader(fr); 

    String[] tokens;
    String temp;
    int i;

    i = 0;
    temp = "";
    while((i=br.read()) != -1) {
        temp = temp + br.readLine();
    }

这是实际的标记化:

public String[] tokenize(String word){
//divides the input by non-char symbol and
//puts tokens into state hashmap as keys
    String[] token;

    token = word.split("\\s|\\.|\\,");  
    return token;
}

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

您可能正在使用BufferedReader.readLine读取文件,该文件会丢弃将一行与下一行分开的换行符,然后将这些字符串连接起来,这会将每行的末尾粘贴到下一行的开头。

你可能会做这样的事情:

String str = "";
while(true) {
    String next = bufferedReader.readline();
    if(next == null) break;
    str += next;
}

不要使用readline,请使用read(char [] cbuf,int off,int len)