我编写了这段代码,用于分割字符串并将其存储在字符串数组中:-
String[] sSentence = sResult.split("[a-z]\\.\\s+");
但是,我添加了 [a-z],因为我想处理一些缩写问题。但后来我的结果显示如下:-
此外,当埃弗里特试图指导他们基础数学时,他们没有反应
我发现我丢失了 split 函数中指定的模式。丢失句号对我来说没关系,但是丢失单词的最后一个字母会扰乱其含义。
有人可以帮助我解决这个问题吗?此外,有人可以帮助我处理缩写吗?例如,因为我根据句点分割字符串,所以我不想丢失缩写。
解析句子绝非易事,即使对于英语等拉丁语言也是如此。像您在问题中概述的那种幼稚的方法经常会失败,以至于在实践中证明它毫无用处。
更好的方法是使用中断迭代器配置了正确的区域设置。
BreakIterator iterator = BreakIterator.getSentenceInstance(Locale.US);
String source = "This is a test. This is a T.L.A. test. Now with a Dr. in it.";
iterator.setText(source);
int start = iterator.first();
for (int end = iterator.next();
end != BreakIterator.DONE;
start = end, end = iterator.next()) {
System.out.println(source.substring(start,end));
}
产生以下结果:
- 这是一个测试。
- 这是一家 T.L.A.测试。
- 现在里面有一个博士。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)