我們一般用trim()方法的主要作用,是為了去除字串的首尾空格。然而根據我個人的實務經驗發現,trim()這個方法只能去除部分的空格或空白符,例如半角空格;對於全角空格的話,用trim()並不能去除掉。所以這時候就需要透過正規來解決,去掉字串首尾空格、空格符號、換行符或製表符、換行符等:
public static void main(String[] args){ String keyword = " 空格符与制表符等 "; keyword = keyword.replaceAll("^[ *| *| *|//s*]*", "").replaceAll("[ *| *| *|//s*]*$", ""); System.out.println("keyword : "+keyword); }
還有一個我網上查找到的資料是這麼解釋的:首先將trim()這個方法進行反編譯,得到:
public string Trim() { return this.TrimHelper(WhitespaceChars, 2); }
TrimHelper這個方法進行反編譯之後得到:
private string TrimHelper(char[] trimChars, int trimType) { int num = this.Length - 1; int startIndex = 0; if (trimType != 1) { startIndex = 0; while (startIndex < this.Length) { int index = 0; char ch = this[startIndex]; index = 0; while (index < trimChars.Length) { if (trimChars[index] == ch) { break; } index++; } if (index == trimChars.Length) { break; } startIndex++; } } if (trimType != 0) { num = this.Length - 1; while (num >= startIndex) { int num4 = 0; char ch2 = this[num]; num4 = 0; while (num4 < trimChars.Length) { if (trimChars[num4] == ch2) { break; } num4++; } if (num4 == trimChars.Length) { break; } num--; } } int length = (num - startIndex) + 1; if (length == this.Length) { return this; } if (length == 0) { return Empty; } return this.InternalSubString(startIndex, length, false); }
TrimHelper有兩個參數:第一個參數trimChars,是要從字串兩端刪除掉的字元的陣列;第二個參數trimType,是標識Trim()的型別。 trimType的值有3個:當傳入0時,移除字串頭部的空白字元;傳入1時,移除字串尾部的空白字元;傳入其他數值則去掉字串兩端的空白字元。最後得出總結是:String.Trim()方法會去除字串兩端,而不僅僅是空格字符,它總共能去除25種字符:('/t', '/n', '/v', ' /f', '/r', ' ', '/x0085', '/x00a0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '?', '/u2028', '/u2029', ' ', '?')。
另外還有兩個方法和trim()類似:去除字串頭部空白字元的TrimStart()和移除字串尾部空白字元的TrimEnd()。
如果想要去除字串兩端的任意字符,可使用Trim的重載方法:String.Trim(Char[]),該方法的源碼是:
public string Trim(params char[] trimChars) { if ((trimChars == null) || (trimChars.Length == 0)) { trimChars = WhitespaceChars; } return this.TrimHelper(trimChars, 2); }
需要注意的是:空格!= 空白字符,想要刪除空格可以使用Trim(' ')。
【相關推薦】
以上是分享Java中TrimHelper方法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!