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

kan*_*rbk 7 java

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

任何人都可以帮助它取代这样的原因.".*"原始字符串中的所有字符,并将其替换为"JAVA".为什么这会返回"JAVAJAVA".

Nic*_*vey 13

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

为了使这项工作符合您的预期,您有几种选择.

String x = "Welcome to Java World";
System.out.println(x.replaceAll(".+","JAVA"));
Run Code Online (Sandbox Code Playgroud)

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

要么

String x = "Welcome to Java World";
System.out.println(x.replaceFirst(".*","JAVA"));
Run Code Online (Sandbox Code Playgroud)

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