【发布时间】:2019-01-23 16:07:10
【问题描述】:
所以我希望将一个句子分成单独的标记。但是,我不想删除我希望成为标记一部分的某些标点符号。例如,如果标点符号后面没有字母,则“没有”应在单词末尾保留为“没有”,则应将其删除。那么你?”应该转换为与开头相同的“you”:“?you”应该是“you”。
String str = "..Hello ?don't #$you %know?";
String[] strArray = new String[10];
strArray = str.split("[^A-za-z]+[\\s]|[\\s]");
//strArray[strArray.length-1]
for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i] + i);
}
这应该只是打印出来: 你好0 不要1 你2 知道3
【问题讨论】:
-
您必须明确解释所有规则。可能您有两个列表:一个包含要保留在单词中的标点符号(将包含引号),另一个包含要忽略的标点符号(将包含问号)
-
这需要一个很长、很复杂的正则表达式。最好写一个解析器,或者使用解析库。