Java?中導(dǎo)入excel時(shí)使用?trim()?無(wú)法去除空格的問(wèn)題解決方案
使用trim無(wú)法去除空格的解決方法
一、問(wèn)題描述
在excel導(dǎo)入操作時(shí),讀取cell中的字符串時(shí),獲取到了cell中的字符串后,通過(guò)string的trim()方法去掉前后的空格,發(fā)現(xiàn)如論如何也去不掉。
二、原因分析
摸索一段時(shí)間后發(fā)現(xiàn),是輸入法的全角和半角空格的原因,trim()方法只能去掉字符串中的ASCII值為32的空格,即半角的空格,無(wú)法去除全角的空格。也就是說(shuō),trim或者replace只能去掉ASCII值為32的空格,而ASCII值為160或全角的空格是無(wú)法通過(guò)replace或者trim處理的全角空格:有的稱(chēng)呼為 中文空格 ; 半角空格:有的稱(chēng)呼為 英文空格。例如:開(kāi)啟全角后,輸入法內(nèi)容是這樣的:abcd 半角輸入是這樣的:abcd ,輸入法,默認(rèn)都是半角的。切換全半角的方式:shift+space

三、解決方案
方案一:使用正則表達(dá)式
ASCII編碼是160的空格,Unicode對(duì)應(yīng)是\u00A0,使用replace+UNICODE編碼\u00A0替換,全角空格(\u3000),使用replace方法+全角空格字符替換,普通空格,使用replace方法+\s替換,正則表達(dá)式.replaceAll(“([ ]|\s|\u00A0)+”,“”)
如下:
public class Demo1 {
public static void main(String[] args) {
String s2 = "全角空格測(cè)試 !!";
System.out.println(s1.replaceAll("([ ]|\\s|\\u00A0)+",""));
// 全角空格測(cè)試!!
}
}方案二:使用String.strip()
我這里的問(wèn)題是全角空格導(dǎo)致的,所以可以使用String.strip()去除字符串前后的“全角和半角”空白字符
public class Demo1 {
public static void main(String[] args) {
String s3 = "吃了沒(méi)\u3000";
System.out.println(s3.trim().length());
System.out.println(s3.strip().length());
// 4 3
System.out.println(s3.strip());
// "吃了沒(méi)"
}注意: JDK11中引入String.strip(),如果你的項(xiàng)目是用的JDK11以下的環(huán)境,是用不了該方法的。
方案三:使用 hutool的 StrUtil.trim()方法
可以使用 spring提供的工具類(lèi) StringUtils.trimWhitespace() 去除 字符串中的全角空格代碼如下:
/**@Description: 全角 空格去除測(cè)試
*/
@Test
public void test2(){
String sLeft = " 左全角空格";
String sMid = " 兩邊 全角空格 ";
String sRight = "右邊全角空格 ";
System.out.println("String工具類(lèi) left:"+ org.springframework.util.StringUtils.trimTrailingWhitespace(sLeft));
System.out.println("String工具類(lèi) mid:"+ org.springframework.util.StringUtils.trimTrailingWhitespace(sMid));
System.out.println("String工具類(lèi) right:"+ org.springframework.util.StringUtils.trimTrailingWhitespace(sRight));
// 使用 hutool的 StrUtil
System.out.println("Hutool StrUtil 工具類(lèi) left:"+StrUtil.trim(sLeft));
System.out.println("Hutool StrUtil 工具類(lèi) mid:"+StrUtil.trim(sMid));
System.out.println("Hutool StrUtil 工具類(lèi) right:"+StrUtil.trim(sRight));
}/**@Description:Hutool StrUtil 去除普通半角空格
* <br> 半角空格=英文空格; 全角空格=中文空格
*/
@Test
public void test3(){
String sLeft = " 左半角 右全角 ";
System.out.println("原始字符串:"+sLeft);
System.out.println("hutool :"+StrUtil.trim(sLeft));
System.out.println("StringUtil :"+StringUtils.trim(sLeft));
System.out.println("Spring StringUtil :"+ org.springframework.util.StringUtils.trimWhitespace(sLeft));
// 去掉 字符串中全部空格
System.out.println(org.springframework.util.StringUtils.trimAllWhitespace(sLeft));
sLeft = StrUtil.trim(sLeft);
System.out.println("最終去除效果:"+sLeft);
}四、總結(jié)
1、java的String類(lèi)中的trim方法,只能去除 半角空格,遇到空格去不掉的情況,可能的全角空格,可以考慮使用hutool或者spring提供的工具類(lèi)試試。
2、hutool 的pom依賴(lài)是:
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.18</version> </dependency>
注意:apache-commons-lang3 里的StringUtils工具類(lèi),無(wú)法去除全角空格,原因是:實(shí)際調(diào)用的是 String類(lèi)的trim()方法。
到此這篇關(guān)于Java 中導(dǎo)入excel時(shí)使用 trim() 無(wú)法去除空格的解決方法的文章就介紹到這了,更多相關(guān)java導(dǎo)入excel使用trim() 無(wú)法去除空格內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用AOP實(shí)現(xiàn)系統(tǒng)告警的方法詳解
在開(kāi)發(fā)的過(guò)程中會(huì)遇到各種各樣的開(kāi)發(fā)問(wèn)題,服務(wù)器宕機(jī)、網(wǎng)絡(luò)抖動(dòng)、代碼本身的bug等等。針對(duì)代碼的bug,我們可以提前預(yù)支,通過(guò)發(fā)送告警信息來(lái)警示我們?nèi)ジ深A(yù),盡早處理。本文將利用AOP實(shí)現(xiàn)系統(tǒng)告警,需要的可以參考一下2022-09-09
詳解Java如何在業(yè)務(wù)代碼中優(yōu)雅的使用策略模式
這篇文章主要為大家介紹了Java如何在業(yè)務(wù)代碼中優(yōu)雅的使用策略模式,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解下2023-08-08
詳解Java數(shù)組的一維和二維講解和內(nèi)存顯示圖
這篇文章主要介紹了Java數(shù)組的一維和二維講解和內(nèi)存顯示圖,數(shù)組就相當(dāng)于一個(gè)容器,存放相同類(lèi)型數(shù)據(jù)的容器。而數(shù)組的本質(zhì)上就是讓我們能 "批量" 創(chuàng)建相同類(lèi)型的變量,需要的朋友可以參考下2023-05-05

