POI导入Excel,字符串格式出现空格,trim无效

一、问题背景

  

   在用poi做导入的时候发现,用户提供的excel里的某些字段总是多了一些空格。

       于是用String自带的trim()去重,发现结果还是有空格。一下几种方法都试过,然并卵。

    

String str = " Hello Word! ";

//方法1:String.trim();trim()是去掉首尾空格
System.out.println("1:"+str.trim());

//方法2:str.replaceAll(" ", ""); 去掉所有空格,包括首尾、中间
String str2 = str.replaceAll(" ", ""); 
System.out.println("2:"+str2); 

//方法3:或者replaceAll(" +",""); 去掉所有空格,包括首尾、中间
String str3 = str.replaceAll(" +", ""); 
System.out.println("3:"+str3); 

//方法4:、str = .replaceAll("\\s*", "");可以替换大部分空白字符, 不限于空格 ; \s 可以匹配空格、制表符、换页符等空白字符的其中任意一个。
String str4 = str.replaceAll("\\s*", ""); 
System.out.println("4:"+str4);

 

二、问题解答

查看String的trim()方法的源码。

 

  发现JAVA去重将字符串截成char数组,然后一个个char循环去跟‘ ’比大小(这里是ASCll码作对比)。

    于是把poi导入的字符串截成char数组,查看poi的空格的ASCll码。

 

通过调试发现poi导入的字符串空格ASCll值:160,而空格(Space)的ASCII码值是:32

说明看到的空格不是真正的空格。

于是自定义一个去空格的方法。

/**
     * @Description: 自定义去空格 excel专用     poi导入的字符串空格ASCll值:160,而空格(Space)的ASCII码值是:32
     * @Author: 
     * @Date: 14:44 2019/4/1
     */
    public static String StringTrim(String str){
        return str.replaceAll("[\\s\\u00A0]+","").trim();
    }

OK 完成。

 

借鉴csdn!

转载于:https://www.cnblogs.com/w-yu-chen/p/10636463.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值