我正在尝试将随机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;
}
非常感谢你的帮助!
答案 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)