如何在replaceall中的符号后替换字母/数字

e5njpo68  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(368)

标题解释了一切。我想知道如何在这个特定符号后替换一个字母/数字§ 使用replaceall方法。
谢谢你的帮助,我不太擅长正则表达式。
我可以替换§ 一无所有,但这并没有真正的帮助,请看:

public String removeSymbols(String text) {
        text.replaceAll("§", "");
        return text;
    }
Before replace all:

§f§c§lTa§6§lpp§e§lle §7- §8[§61.8§8]
§c§lBLACK FRIDAY SALE §7- §e§lUP TO 40% OFF

After:

1f1c1lTa161lpp1e1lle 17- 18[161.818]
1c1lBLACK FRIDAY SALE 17- 1e1lUP TO 40% OFF

就像我说的,任何帮助都是非常感谢的。谢谢!

crcmnpdw

crcmnpdw1#

使用

public String removeSymbols(String text) {
    return text.replaceAll("(?<=§)\\p{Alnum}", "");
}

解释

--------------------------------------------------------------------------------
  (?<=                     look behind to see if there is:
--------------------------------------------------------------------------------
    §                        '§'
--------------------------------------------------------------------------------
  )                        end of look-behind
--------------------------------------------------------------------------------
  \p{Alnum}                 any ASCII letter or digit
ahy6op9u

ahy6op9u2#

您不需要使用正则表达式替换您的需求。你只需使用 String#replace .

public class Main {
    public static void main(String[] args) {
        //Test
        System.out.println(removeSymbols("§f§c§lTa§6§lpp§e§lle §7- §8[§61.8§8]"));
        System.out.println(removeSymbols("§c§lBLACK FRIDAY SALE §7- §e§lUP TO 40% OFF"));
    }

    public static String removeSymbols(String text) {
        return text.replace("§", "1");
    }
}

输出:

1f1c1lTa161lpp1e1lle 17- 18[161.818]
1c1lBLACK FRIDAY SALE 17- 1e1lUP TO 40% OFF

相关问题