前言
字符串切割和分析查找是比较常用的功能,在使用时根据实际情况的需要选择不同的方法。StringTokenizer、split()方式和正则表达式都可以实现相同的功能,如果字符串信息量比较小,可以用split()方式,其使用方法比较简单;如果字符串信息量比较大,可以考虑选择StringTokenizer和正则表达式方式,推荐使用正则表达式,因为StringTokenizer类是考虑兼容性原因保留使用,在新版本代码功能里面不考虑使用。使用正则表达式非常灵活,可以实现非常复杂字符串匹配处理功能。
一、字符串切割
字符串切割主要通过获取字符串的某一部分或特定标识将字符串进行分离,有很多种实现方式,主要有下面四种:
1.使用String类的subString()方法
public static void main(String[] args){@b@ String s="12test34";@b@ System.out.println(s.substring(2));//打印test34 @b@ System.out.println(s.substring(2,6));//打印test@b@@b@}
2.使用String类的split()方法
public static void main(String[] args) {@b@ // TODO Auto-generated method stub@b@ String s="12,test,34";@b@ String[] ss=s.split(",");@b@ for(String $s:ss){@b@ System.out.println($s);@b@ }@b@ }
控制台输出结果:
12@b@test@b@34
3.使用StringTokenizer类
public static void main(String[] args) {@b@ // TODO Auto-generated method stub@b@ String s="12,test,34";@b@ StringTokenizer st=new StringTokenizer(s,",");@b@ while(st.hasMoreElements()){@b@ System.out.println(st.nextToken());@b@ }@b@ }
控制台输出结果:
12@b@test@b@34
4.使用正则表达式
public static void main(String[] args) {@b@ // TODO Auto-generated method stub@b@ String s="12,test,34";@b@ Pattern p=Pattern.compile(",");@b@ String[] ss=p.split(s);@b@ for(String $s:ss){@b@ System.out.println($s);@b@ }@b@ }
控制台输出结果:
12@b@test@b@34
二、字符串查找分析
字符串查找分析主要判断字符串是否包含指定条件的字符信息,可以利用字符串切割功能获取查找内容,实现方式也有很多,主要有下面几种:
1.使用String类的indexOf方法
public static void main(String[] args) {@b@ // TODO Auto-generated method stub@b@ String s="12,test,34";@b@ String kw="test";@b@ int position=s.indexOf(kw);//查找结果返回具体位置@b@ if(position!=-1)@b@ System.out.println("kw出现位置是:"+position);@b@ else@b@ System.out.println("无结果");@b@ }
控制台输出结果:
kw出现位置是:3
还有lastIndexOf()方法和indexOf()方法相似,是从字符串最后一次出现的位置,如果要判断出现多次位置,还是需要使用正则表达式来进行判断。
2.使用正则表达式
public static void main(String[] args) {@b@ // TODO Auto-generated method stub@b@ String s="12,test,34";@b@ String kw="test";@b@ Pattern p=Pattern.compile(kw);@b@ Matcher m=p.matcher(s);@b@ while(m.find()){@b@ String t=s.substring(m.start(),m.end());//截取目标字符串中出现通过开始结束位置@b@ System.out.println(t+"出现位置:"+m.start()+"结束位置:"+m.end());@b@ }@b@ }
控制台输出结果:
test出现位置:3结束位置:7