String.trim()消除不了空格的問題及解決
String.trim()消除不了空格
項(xiàng)目中在后臺(tái)處理空格的時(shí)候使用trim()方法沒起效果
解決方法
transUserName.replaceAll("\\u00A0","");
原因:
前臺(tái)傳過來的是用html轉(zhuǎn)義字符
生成的全角空格,而trim()方法只能消除半角的空格。
擴(kuò)展
查看源碼如下
/** * @return A string whose value is this string, with any leading and trailing white * space removed, or this string if it has no leading or * trailing white space. */ public String trim() { int len = value.length; int st = 0; char[] val = value; /* avoid getfield opcode */ while ((st < len) && (val[st] <= ' ')) { st++; } while ((st < len) && (val[len - 1] <= ' ')) { len--; } return ((st > 0) || (len < value.length)) ? substring(st, len) : this; }
原文的”white space“中文直譯為”留白“或”空白“,但是常見文檔一般翻譯為”空格“,而空格的英文一般應(yīng)譯為”blank”或”space”,所以這塊容易引起歧義。
心得:
trim()方法實(shí)際上trim掉了字符串兩端Unicode編碼小于等于32(\u0020)的所有字符,而全角空格\u00A0的Unicode編碼為12288。
String.trim()方法說明
API說明
trim
public String trim()返回字符串的副本,忽略前導(dǎo)空白和尾部空白。
如果此 String 對(duì)象表示一個(gè)空字符序列,或者此 String 對(duì)象表示的字符序列的第一個(gè)和最后一個(gè)字符的代碼都大于 '\u0020'(空格字符),則返回對(duì)此 String 對(duì)象的引用。
否則,若字符串中沒有代碼大于 '\u0020' 的字符,則創(chuàng)建并返回一個(gè)表示空字符串的新 String 對(duì)象。
否則,假定 k 為字符串中代碼大于 '\u0020' 的第一個(gè)字符的索引,m 為字符串中代碼大于 '\u0020' 的最后一個(gè)字符的索引。創(chuàng)建一個(gè)新的 String 對(duì)象,它表示此字符串中從索引 k 處的字符開始,到索引 m 處的字符結(jié)束的子字符串,即 this.substring(k, m+1) 的結(jié)果。
此方法可用于截去字符串開頭和末尾的空白(如上所述)。
返回:
此字符串移除了前導(dǎo)和尾部空白的副本;如果沒有前導(dǎo)和尾部空白,則返回此字符串。
示例代碼
/** * @Title: TrimTest.java * @Package com.burns * @Description: TODO(用一句話描述該文件做什么) * @author 35725 * @date 2019年11月29日 上午11:45:17 * @version V1.0 */ package com.burns; /** * @ClassName: TrimTest * @Description: TODO(這里用一句話描述這個(gè)類的作用) * @author 35725 * @date 2019年11月29日 * */ public class TrimTest { public static void main(String[] args) { String s= " 1 1 2 3 "; System.out.println("trim方法執(zhí)行之后>>>>"+s.trim()+"<<<<"); System.out.println("源字符串:>>>>"+s+"<<<<<<"); } }
執(zhí)行結(jié)果
trim方法執(zhí)行之后>>>>1 1 2 3<<<<
源字符串:>>>> 1 1 2 3 <<<<<<
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Feign性能優(yōu)化代碼實(shí)例
這篇文章主要介紹了Spring Cloud Feign性能優(yōu)化代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Spring Boot中如何使用Convert接口實(shí)現(xiàn)類型轉(zhuǎn)換器
這篇文章主要介紹了Spring Boot中使用Convert接口實(shí)現(xiàn)類型轉(zhuǎn)換器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08詳解Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送
這篇文章主要介紹了Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送,應(yīng)該會(huì)對(duì)大家學(xué)習(xí)Jenkins有所啟發(fā)2021-04-042022?最新?IntelliJ?IDEA?詳細(xì)配置步驟演示(推薦)
作為一名開發(fā)人員,第一肯定是選擇一款趁手的開發(fā)利器,本人使用?Java?偏多,這里推薦使用?IntelliJ?IDEA,?俗稱神級(jí)開發(fā)工具,具體的安裝過程就不過多贅述了,有需要了解的朋友可以參考下本文2022-09-09java正則表達(dá)式學(xué)習(xí)筆記之命名捕獲
這篇文章主要為大家詳細(xì)介紹了java正則表達(dá)式中的命名捕獲,感興趣的小伙伴們可以參考一下2016-02-02