You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何移除字符串中不可见的零宽空格[ZWSP]特殊字符

问题原因

trim() 方法仅能处理ASCII编码范围内的空白控制字符(Unicode编码值≤U+0020的空白类字符),你遇到的[ZWSP]是零宽空格,对应Unicode编码为U+200B,不在trim()的处理覆盖范围内,因此常规去空白操作无法移除该字符。

解决方案

在拆分字符串前,先全局清除所有零宽空格字符,再执行拆分、转集合的逻辑即可得到目标结果,完整实现代码如下:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ZwspHandler {
    public static void main(String[] args) {
        String str = "+Aa​+Bk​+Bo​+Ac​+Lc​";
        // 全局移除所有零宽空格字符
        String cleanedStr = str.replace("\u200B", "");
        // 拆分后转List
        List<String> targetList = Arrays.stream(cleanedStr.split("\\+"))
                .collect(Collectors.toList());
        // 验证输出:[, Aa, Bk, Bo, Ac, Lc]
        System.out.println(targetList);
    }
}

扩展适配

如果业务场景中可能混入其他零宽类特殊字符(零宽不连字U+200C、零宽连字U+200D、字节顺序标记U+FEFF),可以将字符清理逻辑替换为正则批量替换,一次性清除所有这类不可见零宽字符:

// 批量移除所有常见零宽特殊字符
String cleanedStr = str.replaceAll("[\u200B\u200C\u200D\uFEFF]", "");

注意:清理字符后不需要额外调用trim()处理拆分后的元素,避免误删需要保留的首位置空字符串元素,保证输出格式和要求一致。

内容的提问来源于stack exchange,提问作者Tarun Chaudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:45:40