用正则表达式卡在String.replace java中

时间:2018-07-16 04:25:36

标签: java regex

我有一个简单的代码,我想用一个逗号替换字符串中的多个逗号。这是我尝试过的。我也在寻找火柴,但是我不知何故无法代替它。我不知道我在做什么错。

    String s = "stt,111,,,234";
    String pattern = "\\d[,]{2,}\\d";
    Pattern r = Pattern.compile(pattern);
    Matcher m = r.matcher(s);
    if (m.find()) {
        System.out.println("Found value: " + m.group(0));
        String res = m.group(0);
        s = s.replace(res, ",");
        System.out.println("string after replacement=" + s);
    } else {
        System.out.println("Not found");
    }
    s = s.replace("\\d[,]{2,}\\d", ",");
    System.out.println("Another try string after replacement=" + s);

这是结果:

Found value: 1,,,2
s=stt,111,,,234
s==stt,111,,,234

为什么即使找到该字符串也不能替换它。 我确定它很小,但无法弄清楚它是什么。 谢谢

3 个答案:

答案 0 :(得分:1)

您只需使用字符串类的replaceAll方法,如下所示。

public static void main(String[] args) throws ParseException {
        String s = "stt,111,,,234";
        System.out.println("--------"+s.replaceAll("[,]{2,}", ","));

    }

答案 1 :(得分:1)

replaceAll方法在您的示例中效果很好。尝试一下:

public static void main(String [] args){

    String str = "11,,,222,,,333,,,,,,4444,,,,,,,55555,,,555";
    str = str.replaceAll(",{2,}", ",");
    System.out.println(str);

}

输入: “ 11,,222,,333 ,,,,, 4444 ,,,,,, 55555 ,,, 555” 输出: 11,222,333,4444,55555,555

答案 2 :(得分:0)

尝试以下代码,它将起作用。

import java.util.*;
import java.lang.*;
import java.io.*;

class Abc
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String str = "abc,,,,,,,,xyz,,,,abc";
        str = str.replaceAll("(.)\\1+","$1");
        System.out.println(str);
    }
}