今天在使用String时,遇到以后没有注意过的细节问题,记录一下。
String.contains(CharSequence s);
String.split(String regex);
这两个方法都很简单,但是今天我在敲代码时,犯了一个错误。
String str="abc.def";
str.contains("\\.")
str.split("\\.")
在上面代码中,我想判断字符串是否包含".",所以用了contains方法,但是由于"."是特殊字符,所以我用"\\"转义一下,split也同理,可是问题来了,这样真的能够得到正确答案吗?测试如下:
public static void main(String[] args) {
String str = "abc.def"
System.out.println(str.contains("."))
System.out.println(str.contains("\\."))
System.out.println(str.split(".").length)
System.out.println(str.split("\\.").length)
}
结果是不能的,contains方法不需要你在转义,为什么,因为他的参数是CharSequence。。而split 的方法参数是String,需要手动转义。结果如下:
true
false
0
2