【问题标题】:string trim function is not working [closed]字符串修剪功能不起作用[关闭]
【发布时间】:2013-02-01 20:43:25
【问题描述】:

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

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

请帮帮我

【问题讨论】:

  • The API in this case is very helpful.确实必须将它重新分配给你想要的字符串 - 字符串是不可变的。
  • @Real - 跟着我重复。 “Java 字符串是不可变的”。 :-)
  • @StephenC 我的代码正在运行我犯了一个愚蠢的错误。我必须将修剪函数的返回分配给变量。我不明白你在上面的评论中想说什么。
  • 你看到了什么与你期望看到什么?

标签: java string trim


【解决方案1】:

你需要将trim的结果重新赋值给s

s = s.trim();

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


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

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

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

【讨论】:

  • +1 System.out.println(s == s2); 为真,因为 s 和 s2 具有相同的值,因此为了优化它们将在 jvm 管理的字符串池中保持相同的位置。 stackoverflow.com/questions/3801343/what-is-string-pool-in-java
  • @Rohit - 谢谢,这是我的错误,我忘了重新分配
  • @Real。不客气:)
  • @TapasBose。对对。应该提到这一点。谢谢:)
  • 你应该使用 System.out.println(s.eqauals(s2)) 来检查相等性。
【解决方案2】:

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

String trimmed  = s.trim();

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      s = s.trim();
      

      trimmedS = s.trim();
      

      【讨论】:

        【解决方案5】:

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

        所以你真的需要这样做

        s = s.trim()

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

        【讨论】:

          【解决方案6】:

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

          来自javadocs of String#trim()

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-12-11
            • 2015-04-24
            • 1970-01-01
            • 1970-01-01
            • 2014-08-16
            • 1970-01-01
            • 2017-11-17
            • 2011-01-31
            相关资源
            最近更新 更多