java正则表达式用单个字母替换word中的任何双字母

标签 java regex string

我已经搜索了几个小时但找不到答案,如果之前已经回答过这个问题,我深表歉意。

我正在尝试检查消息中的每个单词是否有双字母,并删除多余的字母,例如“wall”或“doll”等单词将变成“wal”或“dol”。目的是为游戏进行虚假语言翻译,到目前为止我已经识别出双字母,但不知道如何替换它们。

到目前为止,这是我的代码:

public String[] removeDouble(String[] words){
    Pattern pattern = Pattern.compile("(\\w)\\1+");
    for (int i = 0; i < words.length; i++){
        Matcher matcher = pattern.matcher(words[i]);
        if (matcher.find()){
            words[i].replaceAll("what to replace with?");
        }
    }
    return words;
}

最佳答案

如果使用反向引用,则可以在一条语句中完成整个替换操作:

for (int i = 0; i < words.length; i++)
    words[i] = words[i].replaceAll("(.)\\1", "$1");

请注意,您必须分配从(似乎)更改字符串的字符串方法返回的值,因为它们返回新字符串而不是改变字符串。

关于java正则表达式用单个字母替换word中的任何双字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25224277/

相关文章:

java - 任意长度的相邻重复子串

C++:无法使用类型为 'char**' 的右值初始化类型为 'char*[x]' 的变量

c# - 使用正则表达式忽略空字符串和空格

python - 将字典的字符串表示形式转换为真正的字典

java - 使用 Svn Kit 进行 Svn 身份验证用户名、密码和 URL

java - 如何在未运行的情况下检查从 ResourceBundle 调用的字符串是否存在?

编译时的 Java 代码转换

java - 使用音频指纹测量延迟 (Java)

javascript - 正则表达式重复搜索而不 chop

javascript - 引号和双引号的条件正则表达式