java-使用String.split(regex)在空格和标点符号处分割一行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用String.split(regex)在空格和标点符号处分割一行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1445字,纯文字阅读大概需要3分钟。
内容图文
因此,我正在编写一个函数parse()来逐行读取指定的文件,并且利用String.split(regex)函数将行分成单词的字符串数组.此外,每个单词都将传递到另一个函数中包含的HashMap,该函数作为参数传递给parse().在浏览Stack Overflow寻求帮助时,我仍然不确定为什么我的函数导致程序挂起.
这是函数本身:
public void parse(FrequencyCounter counter) throws IOException {
BufferedReader fileReader = new BufferedReader(new FileReader(file));
String searchExpression = "[\\p{Space}\\p{Punct}]";
String line;
String[] wordList;
line = fileReader.readLine();
while (!line.isEmpty()) {
wordList = line.split(searchExpression);
System.out.println("First value of wordList: " + wordList[0]);
for (String each : wordList) {
if(each.isEmpty())
break;
if(counter.isAnElement(each)) {
counter.incrementKey(each);
} else {
counter.addKey(each);
}
}
}
fileReader.close();
}
因此我可以进入while循环,但是在wordList的假定构造之后添加println()语句时,程序将无限打印出一个空的wordList,并且该程序不会从该函数返回.从我的角度来看,我被认为是我使用的正则表达式无法达到我想要的目的.
为了详细说明我需要的内容,正则表达式应隔离仅由字母字符组成的单词.在理想情况下,连词或连字可以完整识别,并添加到wordList中.但是,我可以接受“不会”和“二十二”之类的单词来表示“已赢”,“ t”,“二十二”和“二”.
作为测试用例,我正在运行一个纯文本文件,其中包含Lewis Carroll的诗“ Jabberwocky”,尽管其中不包含很难拆分的非单词标记.
是什么导致此问题,如何改善此功能的解析?
解决方法:
您无需在while循环内更??改字符串行,因此!line.isEmpty()将永远不会被满足.
内容总结
以上是互联网集市为您收集整理的java-使用String.split(regex)在空格和标点符号处分割一行全部内容,希望文章能够帮你解决java-使用String.split(regex)在空格和标点符号处分割一行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。