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

Java移除空字符串报错:unexpected empty sentence: [] 求解

解决方案:实例化Sentence前过滤空内容

不用纠结修改正则,直接在文本清理完成后、传入Sentence构造器之前加一层空值判断,就能彻底避免这个异常。

具体实现步骤

  • 保留你原有的文本清理逻辑(移除数字、标点、尾随空格)
  • 对清理后的字符串做有效性校验:先trim()确保过滤全空格情况,再判断长度是否大于0
  • 仅当字符串有效时才实例化Sentence,无效则直接跳过或给lemmas字段设兜底值

代码示例

public void LemmatiseSingleDocument(String originalText) {
    // 原有清理逻辑:移除数字、标点、尾随空格
    String cleanedText = originalText.replaceAll("[\\d\\p{Punct}]", "").trim();
    
    // 新增空内容过滤逻辑
    if (cleanedText.isEmpty()) {
        // 可根据需求选择跳过处理,或给lemmas设空值/默认标识
        System.out.println("跳过空内容,避免Sentence实例化报错");
        return;
    }
    
    // 仅处理有效内容
    Sentence sentence = new Sentence(cleanedText);
    // 后续将处理后的lemmas存入JSON等操作
    // ...
}

额外优化(Java 11+)

如果原文本清理后可能出现全空白字符(比如" !!! "),可以用isBlank()替代isEmpty(),覆盖更多空白场景:

if (cleanedText.isBlank()) {
    return;
}

为什么不硬改正则?

纯数字、纯标点的组合场景太多(比如"1.8"、"???---"),正则很难一次性覆盖所有情况,反而会让逻辑变得复杂晦涩。在清理后加判断是更直接、易维护的方案,逻辑清晰且不会引入新的正则问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:42:38