java 中的 replaceAll 给出错误的输出
replaceAll in java giving wrong output
replaceAll 为以下代码提供了错误的输出:-
package javaapplication3;
public class JavaApplication3
{
public static void main(String[] args)
{
try
{
String sa = "LTD.";
sa = sa.replaceAll("L.","LE");
sa = sa.replaceAll("LTD.","LTD⋅");
System.out.println(sa);
}
catch (Exception e)
{
System.out.println(e);
}
}
}
输出应该是:LTD⋅
但输出显示:LED。
输出没问题。
public static void main(String[] args) {
String sa = "LTD.";
sa = sa.replaceAll("L.", "LE"); // in regex . means any single character. So, "LT" is replaced. "LTD." is now "LED."
sa = sa.replaceAll("LTD.", "LTD⋅"); // "LED." doesn't have "LTD.". so no replace
System.out.println(sa); // output "LED."
}
改用replace()
。
public static void main(String[] args) {
String sa = "LTD.";
sa = sa.replace("L.", "LE");
sa = sa.replace("LTD.", "LTD⋅");
System.out.println(sa);
}
replaceAll 将正则表达式作为第一个参数。在正则表达式中,.
匹配任何单个字符,因此在第一个 replaceAll 语句中,LT
被替换为 LE
。您可以通过使用 \
.
转义 .
来解决此问题
sa = sa.replaceAll("L\.","LE");
sa = sa.replaceAll("LTD\.","LTD⋅");
有关 java 正则表达式的更多信息:https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
编译并运行此代码here。
replaceAll 为以下代码提供了错误的输出:-
package javaapplication3;
public class JavaApplication3
{
public static void main(String[] args)
{
try
{
String sa = "LTD.";
sa = sa.replaceAll("L.","LE");
sa = sa.replaceAll("LTD.","LTD⋅");
System.out.println(sa);
}
catch (Exception e)
{
System.out.println(e);
}
}
}
输出应该是:LTD⋅
但输出显示:LED。
输出没问题。
public static void main(String[] args) {
String sa = "LTD.";
sa = sa.replaceAll("L.", "LE"); // in regex . means any single character. So, "LT" is replaced. "LTD." is now "LED."
sa = sa.replaceAll("LTD.", "LTD⋅"); // "LED." doesn't have "LTD.". so no replace
System.out.println(sa); // output "LED."
}
改用replace()
。
public static void main(String[] args) {
String sa = "LTD.";
sa = sa.replace("L.", "LE");
sa = sa.replace("LTD.", "LTD⋅");
System.out.println(sa);
}
replaceAll 将正则表达式作为第一个参数。在正则表达式中,.
匹配任何单个字符,因此在第一个 replaceAll 语句中,LT
被替换为 LE
。您可以通过使用 \
.
.
来解决此问题
sa = sa.replaceAll("L\.","LE");
sa = sa.replaceAll("LTD\.","LTD⋅");
有关 java 正则表达式的更多信息:https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
编译并运行此代码here。