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我的代码正常工作我犯了个小错误。我必须把修剪函数的返回分配给变量。我不明白你在上面的评论中想说什么。你看到了什么?你期望看到什么?+1System.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.