如何用一些字符或字符串替换重复的char

时间:2014-02-07 12:59:42

标签: java

我需要用$%替换重复的char,后跟char后跟$%

e.g。 “HELLO”将成为“HE $%L $%O”

我写的以下代码给出了“HE $%L $%LO”。

请指导

    int index=0;
    String str1="";
    String str2="";
    String str4="";
    String str5="";

    for(int i=0;i<str.length();i++) {

        char ch=str.charAt(i);
        index=str.indexOf(ch);
        if(index!=i) {

            str4="$%"+str.charAt(index)+ "$%";
            str1=str.charAt(index)+str5;

            str2=str.replaceFirst(str1,str4);

        }
    }
    return str2;

2 个答案:

答案 0 :(得分:0)

看起来代码丢失了,因为我看不到重复的字符检查,但你想要做的是在连接之前通过str5并去除开头的所有重复字符。然后连接到你的String。

答案 1 :(得分:0)

这是一个解决方案:如果重复项也超过2,则Id解决此问题。所以删除所有重复项:

public class Converter {
    public static void main(String[] args) {
        final String result = replace("HELLO");
        System.out.println("result = " + result);
    }

    private static String replace(String data) {
        final StringBuilder stringBuilder = new StringBuilder();

        for (int i = 0; i < data.length();) {
            int j = i + 1;
            while (j < data.length() && data.charAt(i) == data.charAt(j)) {
                j++;
            }
            if(j > i + 1) { // exist duplicate
                stringBuilder.append("$%").append(data.charAt(i)).append("$%");
            } else {
                stringBuilder.append(data.charAt(i));
            }
            i = j;
        }

        return stringBuilder.toString();
    }
}

结果是:

result = HE$%L$%O
相关问题