用“divider”替换字符串中的char

时间:2017-05-19 18:32:44

标签: java

我正在尝试替换String中的字符。 让我们说字符串是:

"yaaaaaaaay:axaxaxaxa:yaaaaaaay"

我希望java在a之后将所有:更改为下一个:X。所以它看起来像这样:

"yaaaaaaaayXxXxXxXxXyaaaaaaay"

我尝试了以下操作,它确实将所有a替换为X

public static String replaceMiddle(String input, char divider) {
    return input.replace( "a", "X");
}

3 个答案:

答案 0 :(得分:2)

public static void main(String[] args) {
     String str ="yaaaaaaaay:axaxaxaxa:yaaaaaaay";
      String[] strarr=str.split(":");
      String str2=strarr[1].replace("a", "X");
      String res=strarr[0]+str2+strarr[2];
      System.out.println(res);
    }

答案 1 :(得分:1)

可以使用Regex

执行此类操作
public static String replaceMiddle(String input, char divider) {    
    String result = input;

    Matcher matcher = Pattern.compile(":(\\w+):").matcher(input);

    if(matcher.find()){         
        String mid = matcher.group(1).replace( "a", "X");

        result = matcher.replaceAll(":" + mid + ":");
    }

    return result;
}

不完全确定您使用divider,但我认为您打算像这样使用它:

public static void main (String[] args) {
    String input = "yaaaaaaaay:axaxaxaxa:yaaaaaaay";

    System.out.println(replaceMiddle(input, ':'));
}

public static String replaceMiddle(String input, char divider) {    
    String result = input;

    String regex = divider + "(\\w+)" + divider;
    Matcher matcher = Pattern.compile(regex).matcher(input);

    if(matcher.find()){         
        String mid = matcher.group(1).replace( "a", "X");

        result = matcher.replaceAll(divider + mid + divider);
    }

    return result;
}

答案 2 :(得分:1)

实现这一目标的一个简短方法是通过这样做:

String s = "yaaaaaaaay:axaxaxaxa:yaaaaaaay"; 
s = s.replace(s.substring(s.indexOf(":"), s.lastIndexOf(":")),
              s.substring(s.indexOf(":"), s.lastIndexOf(":")).replace("a", "X"));

<强>输出

yaaaaaaaay:XxXxXxXxX:yaaaaaaay