【问题标题】:Remove the same occurrence of specific characters删除相同出现的特定字符
【发布时间】:2017-12-30 08:42:39
【问题描述】:

我想从我放在每个元音之前的字符串中删除“OB”。 例如:“这是一些非常棒的粗体文本”& 将 OB 添加到它之后:“THOBISOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXT” 这就是我写的方法。

public static String unObify(String param) {

    String deleteOB = param.replaceAll("[OB]", "");

    return deleteOB;

}

输出:THISISSMEREALLYGREATLDTEXT

但问题是这个方法也删除了我的字符串中的 O 和 B。我只想删除一个接一个发生的OB。

【问题讨论】:

  • 您的示例输入中没有空格。您的代码适用于此:“THOBIS OBIS SOBOMOBE ROBEOBALLY GROBEOBAT BOBOLD TOBEXT”
  • String deleteOB = param.replaceAll("OB", "");改写吧
  • replace("OB","")

标签: java regex string replaceall


【解决方案1】:

使用您当前的正则表达式[OB],您指定一个匹配OB 的字符类。

如果你想在每个元音之前替换OB,你可以使用正向预测来断言后面是元音:

OB(?=[AEIOU])

或者正如@Tim Biegeleisen 指出的那样,使用使前瞻不区分大小写:

OB(?=(?i)[AEIOU](?-i)) 或者 OB(?=[aeiouAEIOU])

public static String unObify(String param) {

    String deleteOB = param.replaceAll("OB(?=[AEIOU])", "");

    return deleteOB;

}

这将取代

THOBISOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXTTHISISSOMEREALLYGREATBOLDTEXT

THOBSOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXTTHOBSISSOMEREALLYGREATBOLDTEXT

【讨论】:

  • 您可能想要处理区分大小写 +1。
【解决方案2】:

去掉[],写.replaceAll("OB(?=[AaEeIiOoUu])", "");

[] 表示单独匹配[] 中的任何内容

【讨论】:

    猜你喜欢
    • 2019-01-22
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多