StringTokenizer && Java String.split() 简介
StringTokenizer类:
根据自定义字符为分界符进行拆分,并将结果进行封装提供对应方法进行遍历取值, StringTokenizer
方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释;该方法用途类似于split方法,只是对结果进行了封装;
API文档对StringTokenizer进行了说明:StringTokenizer 是出于兼容性的原因而被保留的遗留类。(现在不怎么使用它了,建议使用 String 的 split 方法)
构造器:
· public StringTokenizer(String str,String delim,boolean returnTokens);
· public StringTokenizer(String str,String delim);
· public StringTokenizer(String str);
其中,str为需分析的字符串,delim为定界符,定界符里面的任何一个字符都是分隔符,如"+-*/ "表示碰到"+-*/ "中的任何一个都认为是到达了分隔符了。
常用的方法有:
· public boolean hasMoreTokens(); //判断字符串中是含还有token
· public String nextToken(); //StringTokenizer对象中的下一个token。
· public String nextToken(String delim) //delim为新的定界符
public boolean hasMoreElements ()
StringTokenizer (Java Platform SE 6)
public Object nextElement () //除返回结果类型外,其返回与 nextToken
方法相同的值
在例中,使用StringTokenizer类将字符串“hello,java,delphi,asp,php”分解为三个单词。
【例】
impoort java.util.*;
public class StringTokenizer Demo
{
public static void main(String[] args)
{
String str=" hello,java,delphi,asp,php";
StringTokenizer st=new StringTokenizer(str,",");
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
程序的运行结果为:
hello
java
delphi
asp
php
Java String.split()
Java中的 split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回。对于分割的字符(串),通常是常见,普通的,没什么问题;
但是对某些特殊字符,如果字符(串)正好是“正则”的一部分,则需要转义才能使用, 所以如果想用该字符本身, 这些字符需要进行转义才能表示它本身;例如:
想用 | 竖线去分割某字符,因 | 本身是正则表达式中的一部分,所以需要 \ 去转义,因转义使用 \, 而这个 \ 正好也是正则表达式的字符,所以还得用一个 \ , 所以需要两个 \\。
1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如,“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");
例子:
String[] aa = "aaa|bbb|ccc".split("|");
//String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果
for (int i = 0 ; i <aa.length ; i++ ) {
System.out.println("--"+aa[i]);
}