我需要在字符串中找到两个相邻的重复数字,并替换为一个.如何在Java中执行此操作.一些例子:
123345应该是12345 77433211应该是74321
Von*_*onC 15
可能是一个 replaceAll("(\\d)\\1+", "$1")
$
在替换字符串中起特殊作用,指定第一个捕获组.+
允许替换尽可能多的相同数字(\\d)\\1
只能用pair替换它们:777xx
=> 77xx
(感谢Ben Doom的评论)所以:
System.out.println("77433211".replaceAll("(\\d)\\1+", "$1"));
Run Code Online (Sandbox Code Playgroud)
将返回
74321
Run Code Online (Sandbox Code Playgroud)
String java.lang.String.replaceAll(String regex, String replacement)
Run Code Online (Sandbox Code Playgroud)
将给定替换的给定正则表达式匹配的此字符串的每个子字符串替换.
调用此表单的方法会str.replaceAll(regex, repl)
产生与表达式完全相同的结果
java.util.regex.Pattern.compile(regex).matcher(str).replaceAll(repl)
Run Code Online (Sandbox Code Playgroud)
警告:String.replaceAll()
函数不会修改应用它的String.它返回一个修改过的String(如果模式与任何东西都不匹配,则返回一个内容相同的新String)
因此,您需要影响replaceAll()
对自身的调用结果,以便使用regexp更改实际更新String.
String aString = "77433211"
aString = aString.replaceAll("(\\d)\\1+", "$1"));
Run Code Online (Sandbox Code Playgroud)
我终于自己做了.那些正在寻找解决方案的人,我就是这样做的:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
更简单:
**word = word.replaceAll("(\\d)\\1", "$1");**
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4321 次 |
最近记录: |