我正在编辑一些从 tesseract ocr 收到的电子邮件。
这是我的代码:
if (email != null) {
email = email.replaceAll(" ", "");
email = email.replaceAll("caneer", "career");
email = email.replaceAll("canaer", "career");
email = email.replaceAll("canear", "career");
email = email.replaceAll("caraer", "career");
email = email.replaceAll("carear", "career");
email = email.replace("|", "l");
email = email.replaceAll("}", "j");
email = email.replaceAll("j3b", "job");
email = email.replaceAll("gmaii.com", "gmail.com");
email = email.replaceAll("hotmaii.com", "hotmail.com");
email = email.replaceAll(".c0m", ".com");
email = email.replaceAll(".coin", ".com");
email = email.replaceAll("consuit", "consult");
}
return email;
但是输出不正确。
输入:
amrut=ac.hrworks@g mai|.com
输出:
lalcl.lhlrlwlolrlklsl@lglmlalil|l.lclolml
但是当我在每次替换后将结果分配给一个新字符串时,它工作正常。为什么同一字符串中的连续赋值不起作用?
最佳答案
您会在 Javadoc for String.replaceAll() 中注意到第一个参数是 regular expression .
句点 (.
) 和管道 (|
) 和花括号 (}
) 都有特殊含义。您需要将它们全部转义,例如:
email = email.replaceAll("gmaii\\.com", "gmail.com");
关于java - String.replaceAll() 不适用于某些字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14826143/