问题:文本按照标点符号切分符号丢掉问题
项目场景:需要对一个文字段落按照标点符号切分成一个个句子,使用正则切分的过程中发现标点符号丢了,
问题描述
文本按照标点符号切分符号丢掉问题
原始代码:
public static void main(String[] args) {String content = "这是一段内容。这是另一段内容!这是第三段内容?。";StringTokenizer str = new StringTokenizer(content, "。?!.?!");while (str.hasMoreElements()) {String element = StringUtils.trim((String) str.nextElement());if (StringUtils.isNotBlank(element)) {System.out.println(element);}}}
执行结果:
问题解决:
提示:先按照正则定位到标点符号,然后将内容进行切割
修正后代码:
public static void main(String[] args) {String content = "这是一段内容。这是另一段内容!这是第三段内容?";String regex = "([。?!.?!])";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(content);List<String> list = Lists.newArrayList();int start = 0;int end;while (matcher.find()) {
// System.out.println("原文符号:" + matcher.group() + ",位置:" + matcher.start());end = matcher.start() + 1;String substring = content.substring(start, end);System.out.println(substring);list.add(substring);start = end;}}
执行结果: