【问题标题】:Java String manipulation query using trim() and length() [duplicate]使用 trim() 和 length() 的 Java 字符串操作查询 [重复]
【发布时间】:2014-05-13 08:24:03
【问题描述】:
public class X {

    public static void main(String[] args) {

        String s1=" abc xyz ";
        System.out.println(s1.length());
        s1.trim();
        System.out.println(s1.length());
        System.out.println(s1.trim().length());
    }
}

O/p:

9
9
7

请向我解释为什么 s1.trim().length() 是 7 而不是 9,因为 s1 仍将指向旧字符串,即“abc xyz”?

【问题讨论】:

  • 字符串是不可变的
  • @devnull 刚刚检查了您的个人资料@SO,这很有趣,以至于在“关于我”部分我们“尝试”找到了类似的东西。 :-D
  • @Duncan 你觉得自己像个超级英雄吗? :-)
  • @Duncan 是的,你不知道吗?您可以使用锤子关闭包含您拥有金徽章的标签的问题。

标签: java string trim


【解决方案1】:
s1=s1.trim(); // trim() returns the "trimmed" String. You have to set it back to the reference

【讨论】:

    【解决方案2】:

    s1.trim(); 确实返回修剪后的字符串,因此请捕获一些变量以对其进行修改。

    在您的情况下,它保留了 s1 原样。因此,当您致电 s1.length() 时,它会提供原始 s1s 长度。

    如果你想修改它试试s1=s1.trim();

    【讨论】:

      【解决方案3】:

      Trim 返回新字符串而不是修改它。

      【讨论】:

        猜你喜欢
        • 2011-05-06
        • 2018-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多