最近在写项目的时候涉及到了字符串的切割,开始自己使用的时候没有怎么放在心上,但是当我用split来切割这个点号的时候,发现切割不了,获取的是空数组(split要想对点进行切割得加转义字符),所以就去特意查询了一下相关的资料,这里只是单纯的记录一下。
subString与split区别:
subString切割后返回一个字符串,split切割后返回一个字符串数组。
并且二者的传递的参数还是有区别的,sbstring的参数中可以自己传各种符合不用进行转义,但是split的参数中对一些特殊符号的分割需要进行转义,否则获取到的就是空数组。
直接看demo案例:
package demo1;
import java.util.Arrays;
public class SubStringOrSplitTest {
public static void main(String[] args) {
String fileName = "test.png";
String[] split1 = fileName.split("."); //获取到的数组是空,而且idea也是会提醒的 调用“split()”时可疑的正则表达式“.”
for (String s : split1) {
System.out.println(s);
}
System.out.println("------------------");
String[] split2 = fileName.split(",");
for (String s : split2) {
System.out.println(s);//获取到的test.png
}
System.out.println("------------------");
String[] split3 = fileName.split("\\."); //使用转义符号就可以使用点进行切割了
for (String s : split3) {
System.out.println(s);
} //输出结果 test png
//如果用“|”作为分隔的话,必须是如下写法:使用split对字符串进行切割会出现很多意向不到的结果,所以使用的时候一定要自己写案例测试成功后再写到项目中
//String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
System.out.println("------------------");
String fileName2 = "test1.txt,test2.txt,test3.txt";
String[] split4 = fileName2.split(","); //这个就可以切割出来 因为,不用进行转义
for (String s : split4) {
System.out.println(s); // 输出 test1.txt test2.txt test3.txt"
}
System.out.println("------------------");
String[] split5 = fileName2.split(",", 2); //会以,为分割好,把字符串切割成两份
for (String s : split5) {
System.out.println(s); // 输出test1.txt test2.txt,test3.txt"
}
System.out.println("------------------");
String substring = fileName.substring(fileName.lastIndexOf("."));
System.out.println(substring); //输出.png
String substring1 = fileName.substring(fileName.lastIndexOf(".") + 1);
System.out.println(substring1); //输出png
}
}
测试结果: