Java 字符串修剪功能不工作

Java 字符串修剪功能不工作,java,string,trim,Java,String,Trim,我学习了string.trim()删除前导空格和尾随空格。但在我的情况下,它不工作,我尝试下面的代码,但输出的前导和尾随空间。但我的期望是没有前导和尾随空格的文本。这是我的密码 String s = " Hello Rais "; s += " Welcome to my World "; s.trim( ); System.out.println(s); 请帮助我您需要将trim的结果重新分配回s: s = s.trim(); 请记住,Java中的字符串是不可变的,因此几乎所有的字符串类方

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

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

请帮助我您需要将
trim
的结果重新分配回
s

s = s.trim();
请记住,Java中的字符串是不可变的,因此几乎所有的字符串类方法都将创建并返回一个新字符串,而不是就地修改字符串


虽然这是离题的,但是(正如我在那里所说的
几乎是
),值得知道的是,这条规则的例外是当创建相同长度的
子字符串
时,或者任何时候一个方法返回具有相同值的字符串时,该字符串将被优化,不会创建新字符串,而只是返回
this

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

System.out.println(s == s2); // will print true

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

在Java中字符串是
不可变的
。因此
s.trim()
不会修改原始字符串,而是返回一个新字符串

String trimmed  = s.trim();

嗯..字符串是不可变的对象。因此,无论何时执行trim(),它都会创建一个全新的String对象,需要有一个引用才能访问它。因此,请按如下方式指定对该修剪字符串对象的引用

s = s.trim();


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

所以你真的需要这么做

s=s.trim()


它将引用
s
指定给一个新的
String
对象,该对象的尾随和前导空格已删除

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


您必须将它重新分配给您想要的字符串-字符串是不可变的。@Real-跟我重复。“Java字符串是不可变的。”:-)@StephenC我的代码正常工作我犯了个小错误。我必须把修剪函数的返回分配给变量。我不明白你在上面的评论中想说什么。你看到了什么?你期望看到什么?+1
System.out.println(s==s2)
将为true,因为s和s2具有相同的值,所以对于优化,它们将在jvm管理的字符串池中占据相同的位置@罗希特-谢谢这是我的错,我忘了重新开始assign@Real. 不客气:)@TapasBose。对。我应该提到这一点。谢谢:)您应该使用System.out.println(s.equals(s2))来检查是否相等。
trimmedS = s.trim();
trim

public String trim()
Returns a copy of the string, with leading and trailing whitespace omitted.