当前位置: 首页 > 知识库问答 >
问题:

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

边健
2023-03-14

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

但是当我在每次替换后将结果赋给一个新的字符串时,它工作得很好。为什么在同一个字符串中连续赋值不起作用?

共有3个答案

何兴邦
2023-03-14

通过意识到replace eAll()第一个参数是regex,您可以减少比较

例如,您可以通过以下<code>regex

< code > email = email . replace all(" ca[n | r][e | a][e | a]r "," career ");

芮承运
2023-03-14

(这是Java吗?

注意,在Java中,replaceAll接受正则表达式,并且点匹配任何字符。您需要避开圆点或使用

somestring.replaceAll(Pattern.quote("gmail.com"), "replacement");

请注意此处的打字错误:

email = emai.replaceAll("canear", "career");

应该是

email = email.replaceAll("canear", "career");
陶修洁
2023-03-14

您将在Javadoc forString.replaceAll()中注意到,第一个参数是正则表达式。

句点 (.) 与管道(|)和大括号 (}) 一样具有特殊含义。您需要全部转义它们,例如:

email = email.replaceAll("gmaii\\.com", "gmail.com");
 类似资料:
  • 这是代码: stringOld: StringNew: 输出: 字符串字符串Old 与文件中的某一行匹配,但不会替换为 stringNew。如果我对另一个字符串使用相同的方法,并且在另一个文件上,它可以正常工作

  • 我正在使用来自openweathermap的json API数据来获取有关特定城市的信息。 几天前还好好的,现在由于某种原因,每个标有塞尔维亚国家代码“RS”的城市都不能工作了。http://api.openweathermap.org/data/2.5/weather?q =塞尔维亚贝尔格莱德 如果我使用其他国家的城市,例如这个,它是有效的:http://api.openweathermap.o

  • 我正在做一个与运行时间有关的练习。exec(),我理解这个运行时。exec不是shell解释器,这就是为什么我执行“bash-c'command'”,但出于某种原因,我可以执行像ls这样的命令,但不能执行echo或重定向或多个命令。这些都不起作用: 这是我的java代码: 我使用以下语法运行上述命令: 这是有效的: 我在Ubuntu 20.04和zsh上使用openjdk 11.0.15。有人能告

  • REST API请求:EmployeeRequest。java id、名称、sal、位置-- 员工负责。java id、名称、sal、位置-- /api/employee 我不想在回复中使用除ID以外的其他字段 实际:`{id:“123”,“name:“null”,“sal:“null”,“location:“null”}但我只想要response id,而不是POST response的其他字段

  • 我在试硒。我已经使用Selenium IDE构建了一个快速脚本。它登录到一个页面,打开一个“搜索”窗口,进行搜索,然后打开其中一个结果。 当我在Selenium IDE中运行测试时,它运行良好。当我导出到Java JUnit 4测试用例时,它运行良好。但当我导出到Python2单元测试时,xpath搜索似乎有很多问题。。。 例子: 该页面有一个名为class='keyword'的输入元素。当我使用

  • 问题内容: 我有一个这样的字符串:现在我想用实际的换行符替换\ n,这样它将变成 理发师 这是我的代码 但是它不起作用并且给我相同的字符串 问题答案: 您需要做: 该方法在其第一个参数中期望使用正则表达式。当在Java字符串中传递2时,您实际上传递了1。问题是,是一种逃避字符也正则表达式,因此正则表达式是actualy ,所以你需要把额外的两次。