String x = "Welcome to Java World";
System.out.println(x.replaceAll(".*","JAVA"));
Actual Output = "JAVAJAVA" .
Excepted Output = "JAVA".
任何人都可以帮忙解决这个问题。 “。*”原始字符串中的所有字符,并将其替换为“JAVA”。为什么这会返回“JAVAJAVA”。
答案 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将匹配字符串字符的结尾。