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

如何移除文本中除普通空格外的空白字符?修复PDF模板异常

解决PDF模板中U+200B这类空白字符的问题

你的问题出在之前的正则表达式没覆盖到U+200B这类Unicode扩展空白字符——Java默认的\s仅匹配[\t\n\x0B\f\r ],不包含零宽空格(U+200B)这类特殊空白,所以replaceAll("[^\\S ]", "")没生效。

给你几个可行的修复方案:

方案一:精准移除常见的零宽干扰字符

直接指定要清除的特殊空白字符,针对性强:

private String repair(String text) {
    if (text == null) {
        return "";
    }
    // 移除零宽空格、零宽非连接符、零宽连接符、字节顺序标记等干扰字符
    return text.stripLeading().stripTrailing()
            .replaceAll("\u200B|\u200C|\u200D|\uFEFF", "");
}

方案二:移除所有Unicode空格分隔符(保留常规空格)

用Unicode属性类匹配所有空格类字符,只保留常规空格:

private String repair(String text) {
    if (text == null) {
        return "";
    }
    // \p{Zs}匹配所有Unicode空格分隔符,排除常规空格后移除其余的
    return text.stripLeading().stripTrailing()
            .replaceAll("[\\p{Zs}&&[^ ]]", "");
}

方案三:保留可见字符和常规空格,移除所有其他字符

如果不确定还有哪些特殊字符,直接过滤掉非打印和非常规空格的字符:

private String repair(String text) {
    if (text == null) {
        return "";
    }
    // 只保留可见打印字符和常规空格
    return text.stripLeading().stripTrailing()
            .replaceAll("[^\\p{Print} ]", "");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:51:02