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&#8901
但输出显示:LED。
答案 0 :(得分:2)
输出没问题。
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);
}
答案 1 :(得分:0)
replaceAll采用正则表达式作为它的第一个参数。在正则表达式中,.
匹配任何单个字符,因此在第一个replaceAll语句中,LT
将替换为LE
。您可以通过使用.
转发\\
来解决此问题。
sa = sa.replaceAll("L\\.","LE");
sa = sa.replaceAll("LTD\\.","LTD⋅");
有关java regex的更多信息:https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
编译并运行此代码here。