想要替换" ^^^"用"〜"说abc ^^^ xyz应该像abc~xyz一样被替换

时间:2014-07-01 10:08:29

标签: java string

public class StringExample
{
    public static void main(String[] args)
    {
        String x = "^^^";
        String y = "~";
        String s = "abc^^^xyz";
        if (s != null && s.indexOf(x) > -1)
            s = s.replaceAll(x,y);
        System.out.println("s :" + s);
    }
}

没有给出正确的结果。

  • 输入

      

    ABC ^^^ XYZ

  • 实际输出

      

    〜A〜B〜C〜^〜^〜^〜X〜Y〜ž

  • 预期输出

      

    ABC〜XYZ

6 个答案:

答案 0 :(得分:4)

使用replace代替replaceAll。后者采用正则表达式,其中^是保留字符。

答案 1 :(得分:1)

使用replace()代替replaceAll()

s = s.replace(x,y);

答案 2 :(得分:0)

试试这个:

String str = "abc^^^xyz";
String replaceAll = str.replaceAll("\\^+", "~");
  

注意:您只需要转义字符( ^

答案 3 :(得分:0)

逃离^字符。

public class StringExample {
    public static void main(String[] args) {
        String x = "\\^\\^\\^";
        String y = "~";
        String s = "abc^^^xyz";
        if (s != null && s.indexOf(x) > -1)
            s = s.replaceAll(x,y);
        System.out.println("s :" + s);
    }
} 

答案 4 :(得分:0)

或者

s= s.replaceAll("\\^{3}","~");

s=s.replace("^^^","~");

实际上,replace()方法在内部调用replaceAll()

您可以保存s.indexOf(x) > -1支票。

答案 5 :(得分:0)

虽然在这个实例中你应该使用replace(x,y)而不是replaceAll(x,y),但你仍然可以使用replaceAll(),只引用第一个参数。

这会将正则表达式转换为文字字符串。

Pattern.quote(x)

quote()将逃脱保留;像这样的正则表达式字符:

\Q^^^\E

完整性示例:

import java.util.regex.Pattern;

public class StringExample {
    public static void main(String[] args) {
        String x = "^^^";
        String y = "~";
        String s = "abc^^^xyz";

        if (s != null && s.indexOf(x) > -1) {
            s = s.replaceAll(Pattern.quote(x), y);
        }
        System.out.println("s :" + s);
    }
}