【问题标题】:Replacing string for only one time in Java? [closed]在Java中只替换一次字符串? [关闭]
【发布时间】:2021-11-28 14:14:04
【问题描述】:

说有String A = "aabbccdd" 和String B = "abcd", 有什么办法可以一次性删除字符串 B 对字符串 A 的匹配字符?

预期的输出是 A = "abcd"。

我知道使用 for 循环会解决问题,但有没有更简单的方法呢? 比如使用replaceAll还是正则表达式?

【问题讨论】:

  • 如果A是abbcdacd,结果应该是bacd吗?
  • 不,答案应该是 abcdabcd
  • 你如何从abbcdacd得到abcdabcd??

标签: java character replaceall


【解决方案1】:

你可以使用 distinct() 方法

public static void main(String[] args) {
        String str = "aabbccdd";
        String result = str.chars().distinct().boxed()
                .map(c -> (char) (c.intValue()))
                .map(String::valueOf)
                .collect(Collectors.joining());
        System.out.println(result);
    }

【讨论】:

    【解决方案2】:

    您可以为此使用正则表达式

    A = A.replaceAll("([a-z]+)\1","");
    

    可以在这里找到更多关于正则表达式的信息https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

    【讨论】:

    • 虽然这适用于给出的例子,但我认为这个例子是一个边缘案例;例如,如果 A 是 abbcdacd,则结果应该是 bacd
    猜你喜欢
    • 2012-09-11
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    相关资源
    最近更新 更多