demo样例

if (McSwitchConfig.SEND_TEMPLATE_REPLACEMENT_CHARACTERS != null 
    && !McSwitchConfig.SEND_TEMPLATE_REPLACEMENT_CHARACTERS.isEmpty()){
    String regex = McSwitchConfig.SEND_TEMPLATE_REPLACEMENT_CHARACTERS.stream() 
    .map(Pattern::quote) .collect(Collectors.joining("|")); 
    sanitizedContent = content.replaceAll(regex, ""); 
}

代码业务场景解释:短信配置方法中对短信模板进行处理,拿到短信中的内容进行格式替换删除不符合的字符并更新到原对象mobileMessageDTO中以供后续逻辑使用

Pattern::quote:

将集合中的每个字符转义为正则表达式中的字面量,避免特殊字符(如 *, ?, . 等)被错误解析为正则语法。

例如,如果集合中有字符 * 和 ?,经过 Pattern.quote 转义后会变成 \* 和 \?。

Collectors.joining("|"):

将所有转义后的字符用 | 连接起来,形成一个正则表达式。

例如,如果集合是 ["*", "?", "#"],最终生成的正则表达式为 \*|\?|#。
McSwitchConfig.SEND_TEMPLATE_REPLACEMENT_CHARACTERS = ["*", "?", "#"]

content = "Hello*World?#Test"

执行过程:

检查 SEND_TEMPLATE_REPLACEMENT_CHARACTERS 非空,进入替换逻辑。

构造正则表达式:\*|\?|#。

替换 content 中的匹配字符,结果为:"HelloWorldTest"。

最终,sanitizedContent = "HelloWorldTest"。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐