關注程式設計師米兜,一起做精神小夥
一、前言
java String中的trim()方法時常在代碼中看到,而我們是否能正確使用暱?對於新手來說我感覺你會忽視它,沒有把它用好,導致各種坑。以下深入分析一下trim()。
二、作用
trim()的作用是去掉字符串兩端的多餘的空格,注意,是兩端的空格,且無論兩端的空格有多少個都會去掉,當然,中間的那些空格不會被去掉。看下下面的輸出就知道了:
/** * @author 米兜 * @description * @date 2020/6/25 23:06 * @modified by */public class Trim { public static void main(String[] args) { String trim=&34;; System.out.println(trim.trim()); }}
a b cProcess finished with exit code 0
三、源碼
public String trim() { int len = value.length; /* 拿到字符串長度 */ int st = 0; char[] val = value; /* avoid getfield opcode */ while ((st < len) && (val[st] <= &39;)) { st++; } while ((st < len) && (val[len - 1] <= &39;)) { len--; } return ((st > 0) || (len < value.length)) ? substring(st, len) : this; }
四、坑
(1)以為是String,就trim(),卻忽視了空指針,代碼如下:
/** * @author 米兜 * @description * @date 2020/6/25 23:06 * @modified by */public class Trim { public static void main(String[] args) { String trim=null; System.out.println(trim.trim()); }}
Exception in thread &34; java.lang.NullPointerException at Trim.main(Trim.java:10)Process finished with exit code 1
所以在使用trim(),需要判斷一下字符串是否可能出現null值,以免翻車。
(2)明明用戶覺得輸入正確,但是系統一直提示&34;,然後你對比資料庫數據發現也是正常,但是寫個sql查詢,卻查詢不到結果,此時你懷疑了人生!
這個問題出現,很顯然就是沒有對用戶數據進行空格判斷,用戶在錄入時沒注意帶了一個空格過來,這種問題看似雖小,但很有可能會導致&34;,所以理應考慮周全。這種問題避免,可以使用trim()逐個判斷,也可以對系統請求參數做一個校驗。
五、總結
&34;,為了避免你是那個&34;,所以開發時得嚴謹、謹慎、周全、仔細、負責