我想使用Java中的String replaceAll方法用新值替换整个String

时间:2012-05-04 12:53:55

标签: java

String x = "Welcome to Java World";
System.out.println(x.replaceAll(".*","JAVA"));
Actual Output = "JAVAJAVA" .
Excepted Output = "JAVA".

任何人都可以帮忙解决这个问题。 “。*”原始字符串中的所有字符,并将其替换为“JAVA”。为什么这会返回“JAVAJAVA”。

4 个答案:

答案 0 :(得分:13)

您的正则表达式可以匹配0到所有字符。首先,它匹配整个字符串"Welcome to Java World",然后匹配字符串""的结尾,用"JAVA"替换。

为了使这项工作符合您的预期,您可以选择几种方式。

String x = "Welcome to Java World";
System.out.println(x.replaceAll(".+","JAVA"));

注意+而不是*,这意味着1或多,所以结尾将不匹配。

String x = "Welcome to Java World";
System.out.println(x.replaceFirst(".*","JAVA"));

这只会用"JAVA"替换整个字符串,字符串的空端不会被替换。

答案 1 :(得分:1)

您的任务不需要replaceAll。只需说明

即可实现完全相同的语义
System.out.println("JAVA");

由于String在Java中是不可变的,因此无法避免获取新对象。

答案 2 :(得分:1)

为什么使用“replaceAll”而不是“=”? 字符串在java中是不可变的

答案 3 :(得分:1)

您也可以使用以下格式 x.replaceAll(“。* \ z”,“JAVA”);

As。*将匹配到字符串结尾之前,\ z将匹配字符串字符的结尾。