【问题标题】:replacing mapping character using regex in java [duplicate]在java中使用正则表达式替换映射字符[重复]
【发布时间】:2018-09-18 09:54:53
【问题描述】:

我想将字符串的所有“A”替换为“B”,将所有“B”替换为“Z”,这样“ABCAAB”的结果将是“BZCBBZ”。

有没有办法使用replaceAll函数替换下面的代码?

String init = "ABCAAB"
String res = "";

for (char c: init.toCharArray()){
    switch (c) {
        case 'A':res = res+'B';
        case 'B':res = res+'Z';

        default :res = res+c;

       }
    }

【问题讨论】:

  • String res = init.replaceAll("B", "Z").replaceAll("A", "B");
  • 更简单:String res = init.replace("B", "Z").replace("A", "B");
  • 棘手!但是有没有可能做一次(如果我有更多的替换要做并且没有顺序可以执行它们)
  • @WiktorStribiżew 我不认为你的重复是正确的,那个问题是关于替换字符串中的单词,这个问题是关于替换字母,其中一个字母的替换也可能是一个字母,如果它不是替换字符将被第三个字符替换。
  • @WiktorStribiżew 今天早上我可能会表现出我的咖啡不足,但我看不出如何在不将 ab 转换为 cc 的情况下解决 a => b, b => c 映射。请注意,OP 说他可以有以下映射 a => b, b => c, c => a 这意味着没有正确的排序替换方式。

标签: java regex


【解决方案1】:

如果您知道您的字符串是大写字母,那么您可以将替换字符设为小写,从而将它们标记为已更改。这意味着您可以将A 更改为b 并将B 更改为z,而无需将A 更改为Z。完成所有转换后,您可以将字符串大写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    相关资源
    最近更新 更多