删除相同的特定字符

问题描述 投票:1回答:2

我想从每个元音前面的字符串中删除“OB”。例如:“这是一些非常棒的文字”并且在向它添加OB之后:“THOBISOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXT”这是我写的方法。

public static String unObify(String param) {

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

    return deleteOB;

}

输出:THISISSMEREALLYGREATLDTEXT

但问题是这个方法还删除了我的String中的O和B.我只想删除一个接一个发生的OB。

java regex string replaceall
2个回答
1
投票

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

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

OB(?=[AEIOU])

或者正如@Tim Biegeleisen指出的那样,使用make lookahead case不敏感:

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

public static String unObify(String param) {

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

    return deleteOB;

}

那将取代

THOBISOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXTTHISISSOMEREALLYGREATBOLDTEXT

THOBSOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXTTHOBSISSOMEREALLYGREATBOLDTEXT


1
投票

删除[]并写.replaceAll("OB(?=[AaEeIiOoUu])", "");

[]意味着单独匹配[]内的任何东西

© www.soinside.com 2019 - 2024. All rights reserved.