public static Map<String,String> getCNPunctuation(Map<String,String> summary){ String title = summary.get("title"); String metaContent = summary.get("meta_content"); // 定义英文标点和中文标点的对应关系 Map<String, String> punctuations = new HashMap<>(); punctuations.put(",", ","); punctuations.put(".", "。"); punctuations.put("!", "!"); punctuations.put("?", "?"); punctuations.put(":", ":"); punctuations.put(";", ";"); punctuations.put("(", "("); punctuations.put(")", ")"); // 遍历 Map,将字符串中的英文标点替换成中文标点 for (Map.Entry<String, String> entry : punctuations.entrySet()) { String enPunc = entry.getKey(); String cnPunc = entry.getValue(); title = title.replace(enPunc, cnPunc); metaContent = metaContent.replace(enPunc,cnPunc); } summary.put("title",title); summary.put("meta_content",metaContent); return summary; }这段代码传入的summary,我想加入判断,如果句子中包含连续的...这样三个英文句号则这样连续三个英文句号不会替换成。。。 提示只是句子中的连续三个...不替换,别的标点按照代码逻辑转换,该如何实现
时间: 2023-07-19 21:26:15 浏览: 59
可以在遍历 `punctuations` 替换标点符号之前,先判断句子中是否包含连续三个英文句号。如果包含则不进行替换,否则再进行替换操作。可以使用正则表达式来匹配连续三个英文句号。代码如下:
```
public static Map<String,String> getCNPunctuation(Map<String,String> summary){
String title = summary.get("title");
String metaContent = summary.get("meta_content");
// 定义英文标点和中文标点的对应关系
Map<String, String> punctuations = new HashMap<>();
punctuations.put(",", ",");
punctuations.put(".", "。");
punctuations.put("!", "!");
punctuations.put("?", "?");
punctuations.put(":", ":");
punctuations.put(";", ";");
punctuations.put("(", "(");
punctuations.put(")", ")");
// 判断句子中是否包含连续三个英文句号
boolean hasThreeDots = title.matches(".*\\.\\.\\..*");
// 遍历 Map,将字符串中的英文标点替换成中文标点
for (Map.Entry<String, String> entry : punctuations.entrySet()) {
String enPunc = entry.getKey();
String cnPunc = entry.getValue();
if (enPunc.equals(".") && hasThreeDots) {
// 如果句子中包含连续三个英文句号,则不进行替换
continue;
}
title = title.replace(enPunc, cnPunc);
metaContent = metaContent.replace(enPunc,cnPunc);
}
summary.put("title",title);
summary.put("meta_content",metaContent);
return summary;
}
```
阅读全文