当前位置:  开发笔记 > 编程语言 > 正文

如何找到两个相邻的重复数字并用Java中的单个数字替换它们?

如何解决《如何找到两个相邻的重复数字并用Java中的单个数字替换它们?》经验,为你挑选了2个好方法。

我需要在字符串中找到两个相邻的重复数字,并替换为一个.如何在Java中执行此操作.一些例子:

123345应该是12345 77433211应该是74321



1> VonC..:

可能是一个 replaceAll("(\\d)\\1+", "$1")

$ 在替换字符串中起特殊作用,指定第一个捕获组.

+允许替换尽可能多的相同数字(\\d)\\1只能用pair替换它们:777xx=> 77xx(感谢Ben Doom的评论)

所以:

System.out.println("77433211".replaceAll("(\\d)\\1+", "$1"));

将返回

74321

String java.lang.String.replaceAll(String regex, String replacement)

将给定替换的给定正则表达式匹配的此字符串的每个子字符串替换.

调用此表单的方法会str.replaceAll(regex, repl)产生与表达式完全相同的结果

java.util.regex.Pattern.compile(regex).matcher(str).replaceAll(repl)

警告:String.replaceAll()函数不会修改应用它的String.它返回一个修改过的String(如果模式与任何东西都不匹配,则返回一个内容相同的新String)

因此,您需要影响replaceAll()对自身的调用结果,以便使用regexp更改实际更新String.

String aString = "77433211"
aString = aString.replaceAll("(\\d)\\1+", "$1"));



2> ashokgelal..:

我终于自己做了.那些正在寻找解决方案的人,我就是这样做的:

import java.util.regex.*;

public class RepetingDigits{
    public static void main(String[] args) {
        String word = "77433211";
        Pattern pattern = Pattern.compile("(\\d)\\1");
        Matcher matcher = pattern.matcher(word);
        word = matcher.replaceAll("$1");  
        System.out.println(word);
    }
}

更简单:

**word = word.replaceAll("(\\d)\\1", "$1");**

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有