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)文章
Spark SQL關(guān)于性能調(diào)優(yōu)選項(xiàng)詳解
這篇文章將為大家詳細(xì)講解有關(guān)Spark SQL性能調(diào)優(yōu)選項(xiàng),小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲2023-02-02
如何解決Field name doesn‘t have a defau
這篇文章主要介紹了如何解決Field name doesn‘t have a default value報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
idea導(dǎo)入項(xiàng)目不顯示maven側(cè)邊欄的問題及解決方法
這篇文章主要介紹了idea導(dǎo)入項(xiàng)目不顯示maven側(cè)邊欄的問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Java實(shí)現(xiàn)樹形List與扁平List互轉(zhuǎn)的示例代碼
在平時(shí)的開發(fā)中,我們時(shí)常會(huì)遇到需要將"樹形List"與"扁平List"互轉(zhuǎn)的情況,本文為大家整理了Java實(shí)現(xiàn)樹形List與扁平List互轉(zhuǎn)的示例代碼,希望對(duì)大家有所幫助2023-05-05
springboot實(shí)現(xiàn)只修改配置文件就解決swagger漏洞的問題
這篇文章主要介紹了springboot實(shí)現(xiàn)只修改配置文件就解決swagger漏洞的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03
Maven搭建springboot項(xiàng)目的方法步驟
這篇文章主要介紹了Maven搭建springboot項(xiàng)目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

