现在的位置: 首页 > 综合 > 正文

Java 字符串切割split()和Tokenizer

2018年06月05日 ⁄ 综合 ⁄ 共 3000字 ⁄ 字号 评论关闭

java.lang.String中字符串切割的方法:

public String[] split(String regex)
public String[] split(String regex,int limit)

参数说明:

regex:用于划分的正则表达式

limit:参数控制模式应用的次数,影响所得数组的长度。这个值可正可负可为零,这里只说工作中常用的即limit为正数,表示返回的数组中元素的个数。

如下对应:

Regex   Limit          结果 
:        2       { "boo", "and:foo" } 
:        5       { "boo", "and", "foo" } 

如下示例代码:

public class SplitTest {

	public static void main(String[] args) {
		
		String str = "我-爱-你";
		/******************public String[] split(String regex)**********/
		//切割
		String[] splits = str.split("-");
		//遍历输出
		for (String s : splits){
			System.out.println(s);
		}
		
		/*********************public String[] split(String regex,int limit)**********/
		int limit = 2;//切割返回的字符串数组中只有两个元素
		String[] rsplits = str.split("-", limit);
		for (String s : rsplits){
			System.out.println(s);
		}
		
	}
}

输出结果:

我
爱
你
我
爱-你

注:采用split("-",2)时,返回的是两个元素的数组第一个元素是"我";第二个元素是"爱-你"。

有一些情况下分隔符比较特殊,需要我们转译之后才能使用,如下示例:

public class SplitTest {

	public static void main(String[] args) {
		
		String str = "我.爱.你";
		/******************public String[] split(String regex)**********/
		//切割
		String[] splits = str.split("\\.");
		//遍历输出
		for (String s : splits){
			System.out.println(s);
		}
		
		
	}
}

输出结果:

我
爱
你

常用分隔符注意事项:

1."|"、  “*”  、 "+"  都必须加上转译字符,即前面加上"\\"。

2.还有一个更特殊的,如果分隔符是"\",那就必须写成"\\\\"。
3.如果一个字符串中有多个分隔符,可以用"|"作为连接字符。

如: String str = "我#爱-你",则可以写成str.split("#|-"),代码如下:

public class SplitTest {

	public static void main(String[] args) {
		
		String str = "我#爱-你=呀";
		/******************public String[] split(String regex)**********/
		//切割
		String[] splits = str.split("#|-|=");
		//遍历输出
		for (String s : splits){
			System.out.println(s);
		}
		
		
	}
}

输出结果如下:

我
爱
你
呀

下面介绍另外一个分割字符串的工具:java.util.StringTokenizer

这也是一个字符串分割解析工具,所以它在util包下,但这个类是出于兼容性的原因而被保留的遗留类,所以并不建议使用它,建议使用String类中的split()方法进行字符串切割。下面通过一个示例来体会一下这个工具类,还是先来看看构造方函数和相关方法吧:

构造函数
StringTokenizer(String str):
构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。

StringTokenizer(String str,String delim):
构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。

常用方法
boolean hasMoreTokens():返回是否还有分隔符。
boolean hasMoreElements():返回是否还有分隔符。
String nextToken():返回从当前位置到下一个分隔符的字符串。
Object nextElement():返回从当前位置到下一个分隔符的字符串。

注:值得一提的是第一个构造函数即当不指定分隔符时,会使用java默认的分隔符即“空格”、“制表符(\t)”、“换行符(\n)”、"回车符(\r)"。

示例代码如下:

public class SplitTest {

	public static void main(String[] args) {
		
		String str = "我-爱-你";
		
		//创建StringTokenizer对象
		StringTokenizer stringTokenizer = new StringTokenizer(str,"-");
		
		//使用hasMoreElements()遍历输出
		while (stringTokenizer.hasMoreElements()){
			
			System.out.println(stringTokenizer.nextElement());
		}
		
		//使用hasMoreTokens()遍历输出
		while (stringTokenizer.hasMoreTokens()){
			
			System.out.println(stringTokenizer.nextToken());
		}
		
	}
}

如果不指定分隔符时,会采用默认的分隔符,如下:

public class SplitTest {

	public static void main(String[] args) {
		
		String str = "我 爱-你";
		
		//创建StringTokenizer对象
		StringTokenizer stringTokenizer = new StringTokenizer(str);
		
		//使用hasMoreElements()遍历输出
		while (stringTokenizer.hasMoreElements()){
			
			System.out.println(stringTokenizer.nextElement());
		}
		
		
	}
}

结果如下:

我
爱-你

同样StringTokenizer也可以指定多个分隔符,如下:

public class SplitTest {

	public static void main(String[] args) {
		
		String str = "我 爱-你#啊&哈";
		
		//创建StringTokenizer对象
		StringTokenizer stringTokenizer = new StringTokenizer(str," -#&");
		
		//使用hasMoreElements()遍历输出
		while (stringTokenizer.hasMoreElements()){
			
			System.out.println(stringTokenizer.nextElement());
		}
		
		
	}
}

注:多个分隔符之间不需要使用其他符号隔开。

输出结果如下:

我
爱
你
啊
哈

抱歉!评论已关闭.