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!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM