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
答案 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);
}
}