java string.split 空格_java-使用String.split(regex)在空格和标点符号处...

因此,我正在编写一个函数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”,尽管其中不包含很难拆分的非单词标记.

是什么导致此问题,如何改善此功能的解析?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值