String srt="abc?abc";str.replaceAll("?", "#");会提示这样的错误Dangling meta character '?' near index 0 ? ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.sequence(Unknown Source) at java.util.regex.Pattern.expr(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.<init>(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source)str.replaceAll("[?]", "#");
replaceAll("\u003F","");
都试了不行,提示java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 ?
?是正则表达式中的特殊字符,所以不能直接替换,必须转义,
而转义符\在java的字符串中也是有特殊含义的,因此必须二次转义,也就是“\\”先由java解释成一个'\',然后再将‘?’转义成普通字符。
String strTemp=str.replace("?", "##########");
System.out.println(str);
System.out.println(strTemp);agc?aa
agc##########aa
人家问的是replaceAll,你脸红去吧。
请你看清题目,人家问的是replaceAll,这个方法的第一个参数,java是作为正则表达式对待的。
str1.toString().replaceAll("\\?","");但是,我从程序读到指定的网页,
网页中的"?"这个符号就是不能替换,很奇怪。不知道为什么。
public class Wh
{
public static String main(String content)
{
//content=50?O;
String str1=content;
String str2="";
str2=str1.toString().replaceAll("\\?O","");
System.out.println(str2);
return str2;
}
}
===content用注册掉的那句,可以去掉"?O"
从网页中取出来的html,调用这个方法,就找不到?O,奇怪
?
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)str.replaceAll("[?]", "#");