java string.trim()得到了意想不到的结果

时间:2015-09-17 05:58:57

标签: java string

以下是代码:

String str="    ";
System.out.println("("+str+")");
str=str.trim();
System.out.println(str==null);
System.out.println(str=="");
System.out.println(str.length());
System.out.println("("+str+")");

,输出为:

(    )
false
false
0
()

Multiple spaces.trim()的回归特征是什么?显然它不能 null

3 个答案:

答案 0 :(得分:5)

不是它的null空字符串。 ""

那是

的原因
System.out.println(str==null); 

返回false

但是在

的情况下
System.out.println(str=="");

使用

str.equals("")

它将返回true

如果您想知道为什么

System.out.println(str=="");

返回false;

阅读How do I compare strings in Java? 要么,  Java String.equals versus ==
或搜索谷歌的字符串比较,这是一个非常受欢迎的话题。

答案 1 :(得分:1)

public String trim()

返回字符串的副本,省略前导和尾随空格。

如果此String对象表示空字符序列,或者此String对象表示的字符序列的第一个和最后一个字符的代码都大于'\u0020'(空格字符),则引用此String对象归还。

否则,如果字符串中没有代码大于'\u0020'的字符,则会创建并返回表示空字符串的新String对象。

否则,让k为代码大于'\u0020'的字符串中第一个字符的索引,让m为代码大于{{1}的字符串中最后一个字符的索引}。创建一个新的String对象,表示该字符串的子字符串,该字符串以索引为k的字符开头,以索引为m的字符结尾,即'\u0020'的结果。

此方法可用于从字符串的开头和结尾修剪空格(如上所述)。

返回: 删除了前导和尾随空格的此字符串的副本,如果没有前导或尾随空格,则为此字符串。

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

答案 2 :(得分:0)

如果您查找有关PreparedStatement的某些信息,请删除相关字符串开头和结尾处的任何空格或字符,因此,如果您使用.trim(),则可能是同样

.trim()