java - String.replaceAll() 不适用于某些字符串

标签 java string str-replace

我正在编辑一些从 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/

相关文章:

java - 使用 OpenCSV 解析包含 Unicode 字符的 CSV 文件

java - 检查字符串是否包含所有唯一字符

PHP 用数组中的值替换子字符串

java 字符串和哈希集成员资格匹配

java - 覆盖自身的字符串数组列表

python - 正则表达式替换为正确的间距

php - 从 $contactname php 中删除空格

java - 在 OpenGL 中用以像素为单位给出的坐标绘制一条线

java - Java 递归反转字符串

java - 如何在 java 中将文件(通过 URL 寻址)读入字符串?