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 14:26:14 浏览: 33
您可以在遍历 Map 替换标点之前,先判断 title 和 metaContent 中是否包含省略号,如果包含省略号则将省略号替换为 "...",否则按照代码逻辑将英文标点替换为中文标点。代码如下所示:
```
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(")", ")");
// 判断是否包含省略号,如果包含则不替换
if (!title.contains("...")) {
title = title.replace(".", "。");
}
if (!metaContent.contains("...")) {
metaContent = metaContent.replace(".", "。");
}
// 遍历 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;
}
```
这样就可以实现只有省略号不替换的效果了。