3

我学会了string.trim()删除前导和尾随空格。但在我的情况下,它不起作用我正在尝试下面的代码,但输出带有前导和尾随空格。但我的期望是没有前导和尾随空格的文本。这是我的代码。

String s = " Hello Rais ";
s += " Welcome to my World ";
s.trim( );
System.out.println(s);

请帮我

4

6 回答 6

10

您需要将返回的结果重新分配trims

s = s.trim();

请记住,Java 中的字符串是不可变的,因此几乎所有 String 类方法都会创建并返回一个新字符串,而不是就地修改字符串。


虽然这是题外话,但是(正如我在那里所说almost),值得知道的是,这个规则的例外是在创建substring相同长度的时候,或者任何时候方法返回具有相同值的字符串,这将被优化和不会创建一个新字符串,而只是简单地 return this

String s = "Rohit";
String s2 = s.substring(0, s.length());

System.out.println(s == s2); // will print true
于 2013-02-17T07:46:29.643 回答
6

在 Java 中,字符串是immutable. 所以s.trim()不修改原始字符串而是返回一个新字符串。

String trimmed  = s.trim();
于 2013-02-17T07:47:45.207 回答
4

只需添加s=s.trim( );,因为 trim 返回一个新字符串

于 2013-02-17T07:47:13.063 回答
3

嗯..string 是不可变的对象。因此,每当您执行 trim() 时,它都会创建一个全新的 String 对象,该对象需要引用才能访问它。因此,请按如下方式为这个修剪过的 String 对象分配一个引用。

s = s.trim();

或者

trimmedS = s.trim();
于 2013-02-17T07:48:36.963 回答
3

了解String在 Java 中是不可变的。这意味着对String类的任何操作都不会更改内部字符串本身,而是返回一个新String对象。

所以你真的需要做

s = s.trim()

它将引用分配给删除了尾随和前导空格s的新对象。String

于 2013-02-17T07:48:47.443 回答
2

trim函数通过修剪空格返回原始字符串的副本,因此您需要存储新返回的字符串,例如s = s.trim()

来自String#trim() 的 javadocs

trim

public String trim()
Returns a copy of the string, with leading and trailing whitespace omitted.
于 2013-02-17T07:49:50.727 回答