一、前言
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=" a b c ";
System.out.println(trim.trim());
}
}
a b c
Process 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] <= ' ')) {
st++;
}
while ((st < len) && (val[len - 1] <= ' ')) {
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 "main" java.lang.NullPointerException
at Trim.main(Trim.java:10)
Process finished with exit code 1
所以在使用trim(),需要判断一下字符串是否可能出现null值,以免翻车。
(2)明明用户觉得输入正确,但是系统一直提示"***不存在",然后你对比数据库数据发现也是正常,但是写个sql查询,却查询不到结果,此时你怀疑了人生!
这个问题出现,很显然就是没有对用户数据进行空格判断,用户在录入时没注意带了一个空格过来,这种问题看似虽小,但很有可能会导致"一锅老鼠屎,坏了一锅粥",所以理应考虑周全。这种问题避免,可以使用trim()逐个判断,也可以对系统请求参数做一个校验。
五、总结
"前人挖坑,后人背锅",为了避免你是那个"前人",所以开发时得严谨、谨慎、周全、仔细、负责