Jsoup解析Html踩坑问题

文章讨论了Jsoup在解析HTML时如何处理不同类型的空格,包括普通空格和No-Break-Space。全角空格在Unicode中的码值为12288,而普通空格为32。No-Break-Space与普通空格在某些操作中需注意区分。文中提供了解决字符串中空格问题的代码示例,包括去除全部和首尾空格的方法。
摘要由CSDN通过智能技术生成

Jsoup在解析Html时,转换的空格存在以下问题

  1. 普通空格
 char c = 12288;

在html文件中的 空格 会被解析为 全角空格,全角空格在unicode编码中的码值时12288,而正常的space空格在uncoide中的码值时32,这里在转换时要注意。

  1. No-Break-Space 空格

No-Break-Space 的简写为nbsp,这个字符就对应了html内的&nbsp空格,这个空格和普通的32空格是完全一样的,没有任何区别,但是在进行例如 startWith(" “) endsWith(” ")等方法时 空格都是半角空格,所以此时一定要注意。

去除一个字符串全部空格的方法

    protected static String trimAllBlank(String text) {
        if (isEmpty(text)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < text.length(); i++) {
            char charAt = text.charAt(i);
            int intCode = (int) charAt;
            if (blankCode.contains(intCode)) {
                sb.append("");
            } else {
                sb.append(charAt);
            }
        }
        text = sb.toString();
        return text;
    }

去除一个字符串首尾空格的方法

    //去除前后空格
    protected static String trimHeadAndTailBlank(String tdText) {
        if (isEmpty(tdText)) {
            return "";
        }
        while (tdText.length() > 0) {
            char c = tdText.charAt(0);
            //判断第一个字符是否是空格
            if (blankCode.contains((int) c)) {
                //删除第一个空格
                tdText = tdText.substring(1);
            } else {
                break;
            }
        }

        while (tdText.length() > 0) {
            char c = tdText.charAt(tdText.length() - 1);
            //判断第一个字符是否是空格
            if (blankCode.contains((int) c)) {
                //删除第一个空格
                tdText = tdText.substring(0, tdText.length() - 1);
            } else {
                break;
            }
        }

        return tdText;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值