【问题标题】:String replaceAll not working with string object [duplicate]字符串replaceAll不适用于字符串对象[重复]
【发布时间】:2016-05-20 13:49:36
【问题描述】:

我使用了以下字符串操作,但无法理解为什么第一种情况不起作用。

案例 - 1:

String myString = new String("old String");
System.out.println(myString);
myString.replaceAll( "old", "new" );
System.out.println( myString );

//Output
old String
old String

案例 - 2:

String myString = new String("old String" );
System.out.println(myString);
myString = new String("new String");
System.out.println(myString);

//Output
old String
new String

为什么案例 - 1 有效,但案例 - 2 无效?

【问题讨论】:

  • String.replaceAll() 返回带有更改的 String 的新实例。原来的 String 没有改变,因为 String 是不可变的。

标签: java


【解决方案1】:

String.replaceAll() 返回具有指定替换的新字符串。你需要做的:

myString = myString.replaceAll( "old", "new" );

【讨论】:

  • 因为这个问题之前已经回答过很多次了,再回答一次只是为了轻松获得声誉,这并不酷。尤其是答案不是那么好:例如缺少文档链接。
【解决方案2】:

replaceAll 方法返回一个 String 对象。您必须将其分配回 myString 或另一个变量,因为字符串是不可变的。

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多