基础(一)之java分割字符串

split()方法

split方法本质上是使用正则表达式来进行切割的,所以我们在使用他的时候对于像:|这种转义字符进行切割的时候就出现问题了:

StringTokenizer

​ StringTokenizer类是一个较偏僻的历史留下来的兼容类。特点是不支持正则表达式,也就不存在转义字符的问题,但是本质上是只支持单字符分割的

String str = "1,2,3|4,5,6|7,8,9";

StringTokenizer st = new StringTokenizer(str , ",,",false);//"|");
while(st.hasMoreTokens()) { 
System.out.println(st.nextToken());
}

构造

StringTokenizer(String str, String delimiters)
StringTokenizer(String str, String delimiters, boolean delimitersAreToken)

其中第三个boolean delimitersAreToken是是否返回分隔符也是token,启用后 

substring

最精确的,就是操作表较繁琐,效率比上面两个都要低

这个方法会过滤掉空值和空串数据

public static List<String> getListByDelimiter(String str , String delimiter) {
	int index;
	String tempString;
	List<String> resList = new LinkedList<>();
	
    while ((index = str.indexOf(delimiter)) >= 0) {
    	tempString = str.substring(0, index);
    	if(tempString!=null && !tempString.trim().equals("")) resList.add(tempString);
    	str = str.substring(index + delimiter.length());
    	if (str.indexOf(delimiter)<0) {
    		if(str!=null && !str.trim().equals(""))	resList.add(str);
		}
    }
	return resList;
}


public static void main(String[] args) {s
    	for (String s : getListByDelimiter(str, "|")) {
		System.out.println(s);
		}
}

不过滤数据的

当我们去掉两个if判断后:

public static List<String> getListByDelimiter(String str , String delimiter) {
	int index;
	String tempString;
	List<String> resList = new LinkedList<>();
	
    while ((index = str.indexOf(delimiter)) >= 0) {
    	tempString = str.substring(0, index);
    	resList.add(tempString);
    	str = str.substring(index + delimiter.length());
    	if (str.indexOf(delimiter)<0) {
    		resList.add(str);
		}
    }
	return resList;
}

特殊符号进行分割

1.使用 "\" 分隔

切割时需写成 split("\\\\");

2.使用 "|" 分隔

切割时需写成split("\\|");

3.使用 "||" 分隔

切割时需写成split("\\|\\|")

4. 使用 " “ " 分隔

切割时需写成split("\"")

 

posted @ 2022-07-11 17:44  永远爱芒果  阅读(1871)  评论(0)    收藏  举报