JAVA中place()和placeAll()的区别及⽤法
乍⼀看,字⾯上理解好像replace只替换第⼀个出现的字符(受javascript的影响),replaceall替换所有的字符,其实⼤不然,只是替换的⽤途不⼀样。
public String replace(char oldChar,char newChar)
返回⼀个新的字符串,它是通过⽤ newChar 替换此字符串中出现的所有 oldChar ⽽⽣成的。如果 oldChar 在此 String 对象表⽰的字符序列中没有出现,则返回对此 String 对象的引⽤。否则,创建⼀个新的 String 对象,⽤来表⽰与此 String 对象表⽰的字符序列相等的字符序列,除了每个出现的 oldChar 都被⼀个 newChar 替换之外。
public String replaceAll(String regex,String replacement)使⽤给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个⼦字符串。此⽅法调⽤的 placeAll(regex, repl) 形式产⽣与以下表达式完全相同的结果:
Patternpile(regex).matcher(str).replaceAll(repl)
参数:
regex - ⽤来匹配此字符串的正则表达式
返回:得到的 String
抛出: PatternSyntaxException - 如果正则表达式的语法⽆效。
实际应⽤:
public static void main(String[] arg) throws OgnlException {
String s ="sdf//a//aa";
//把s中的反斜杠/ 替换为//
System.out.println(s);
System.out.placeAll("////", "////////"));
System.out.place("//", "////"));
}
可以看出上⾯两种都返回相同的替换结果。
这⾥的关键是placeAll()是⽤regular expression 来作为参数的。但是java本⾝的字符串对于转义符/也有类似的处理。⾸先,java会把“////”解释成⼀个字符串(其中包含两个char)——“/ /”这个就是你在JDK的⽂档⾥看到的。
接下来,由于replaceAll是以正则表达式作为参数,所以“//”被解释成⼀个regex。对于⼀个regex来说这就代表着⼀个字符,就是“/”。对后⾯的那个8个/来说,最终会被解释成“//”。
换⾔之,假设placeAll()是以普通字符串,⽽不是regex作为参数,那么这样写代码: String target = placeAll('//', '////'); 就可以了。
----------------------------------------------------------------
中[]转义 [[],[]]
中 String sfilenum = "test[Name]";
sfilenum = placeAll("//[", "AA");
sfilenum = placeAll("//]", "BB");
sfilenum = placeAll("AA", "[[]");
sfilenum = placeAll("BB", "[]]");
c++中string的用法顶
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论