我有一个文本文件,希望打印每个段落的 第一个 句子。段落由换行符分隔,即“\ n”。
从BreakIterator中,我认为我可以使用getLineInstance(),但似乎它是每个单词的迭代器:
public String[] extractFirstSentences() {
BreakIterator boundary = BreakIterator.getLineInstance(Locale.US);
boundary.setText(getText());
List<String> sentences = new ArrayList<String>();
int start = boundary.first();
int end = boundary.next();
while (end != BreakIterator.DONE) {
String sentence = getText().substring(start, end).trim();
if (!sentence.isEmpty()) {
sentences.add(sentence);
}
start = end;
end = boundary.next();
}
return sentences.toArray(new String[sentences.size()]);
我是否错误地使用了getLineInstance()或者是否有其他方法可以执行我想要的操作?
答案 0 :(得分:2)
作为替代方案如何:
public String[] extractFirstSentences() {
String myText = getText();
String[] paragraphs = myText.split("\\n");
List<String> result = new ArrayList<String>();
for (String paragraph : paragraphs) {
result.add(paragraph.split("[\\.\\?\\!][\\r\\n\\t ]+")[0] + ".");
}
return result.toArray(new String[result.size()]);
}