1、java中字符串操作方法整理 本篇文章和本人写的“java中文件操作大全”一样,都是本人工作学习中总结所得,不断更新,不断完善。一.Java字符串类基本概念在JAVA语言中,字符串数据实际上由String类所实现的。Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串;二类是在程序中会被改变长度的可变字符串。Java环境为了存储和维护这两类字符串提供了 String和StringBuffer两个类。一、创建字符串例: String str=new(This is a String);或者 String str=This is a String;二、得到字符串对象的有关信息1.通过
2、调用length()方法得到String的长度.例:String str=This is a String;int len =str.length();2.StringBuffer类的capacity()方法与String类的 length()的方法类似,但是她测试是分配给StringBuffer的内存空间的大小,而不是当前被使用了的内存空间。3如果想确定字符串中指定字符或子字符串在给定字符串的位置,可以用 indexOf()和lastIndexOf()方法。String str=This is a String;Int index1 =str.indexOf(i); /index=2Int
3、index2=str.indexOf(i,index+1); /index2=5Int index3=str.lastIndexOf(I); /index3=15Int index4=str.indexOf(String); /index4=10三、String 对象的比较和操作1String 对象的比较String类的equals()方法用来确定两个字符串是否相等。String str=This is a String;Boolean result=str.equals(This is another String );/result=false2String对象的访问A、方法charAt(
4、)用以得到指定位置的字符。String str=This is a String;char chr=str.charAt(3); /chr=iB、方法getChars()用以得到字符串的一部分字符串public void getChars(int srcBegin,int srcEnd,chardst,int dstBegin)String str=This is a String;Char chr =new char10;Str.getChars(5,12,chr,0); /chr=is a StC、subString()是提取字符串的另一种方法,它可以指定从何处开始提取字符串以及何处结束。
5、3操作字符串A、replace()方法可以将字符串中的一个字符替换为另一个字符。String str=This is a String;String str1=str.replace(T,t); /str1=this is a StringB、concat()方法可以把两个字符串合并为一个字符串。String str=This is a String;String str1=str.concat(Test); /str1=This is a String TestC、toUpperCase()和toLowerCase()方法分别实现字符串大小写的转换。String str=THIS IS A
6、STRING;String str1=str.toLowerCase(); /str1=this is a string;D、trim()方法可以将字符串中开头和结尾处的空格去掉.String str=This is a String ;String str1=str.trim(); / str1=This is a StringE、String 类提供静态方法valueOf(),它可以将任何类型的数据对象转换为一个字符串。如System.out.println(String,ValueOf(math,PI);四、修改可变字符串StringBuffer类为可变字符串的修改提供了3种方法,在字符
7、串中间插入和改变某个位置所在的字符。1在字符串后面追加:用append()方法将各种对象加入到字符串中。2在字符串中间插入:用insert()方法。例StringBuffer str=new StringBuffer(This is a String);Str.insert(9,test);System.out.println(str.toString();这段代码输出为:This is a test String3.改变某个位置所在的字符,用setCharAt()方法。StringBuffer sb =new StringBuffer(aaaaaa);sb.setCharAt(2, “b”)
8、; / 结果aabaaa二.字符串分割1.利用字符串类的split方法进行分割/*/*利用字符串的split方法进行分割*paramstr待分割的字符串*paramsdelimiter分割符*return*/publicStringsplitString(Stringstr,Stringsdelimiter).Stringarray=str.split(sdelimiter);returnarray;2.利用StringTokenizer来进行字符串分割/*/*利用StringTokenizer来进行字符串分割*paramstr待分割的字符串*paramsdelimiter分割符*return
9、*/publicStringuseStringTokenizer(Stringstr,Stringsdelimiter).StringTokenizertoken=newStringTokenizer(str,sdelimiter);Stringarray=newStringtoken.countTokens();inti=0;while(token.hasMoreTokens().arrayi=token.nextToken();i+;returnarray;三.字符串数组排序/*/*对字符串数组进行排序*paramstr原始字符串数组*paramflagflag=0:顺序排序flag=1:
10、倒序排序*return排序后的字符串数组*/publicStringsort(Stringstr,intflag).if(str=null|str.length=0)thrownewIllegalArgumentException();Stringtemp=str0;/顺序排列,即从小到大if(flag=0).for(inti=0;istr.length-1;i+).for(intj=i+1;j0).temp=stri;stri=strj;strj=temp;elseif(flag=1)./倒序排列for(inti=0;istr.length-1;i+).for(intj=i+1;jstr.l
11、ength;j+).if(pareTo(strj)0).temp=stri;stri=strj;strj=temp;returnstr;四.使用Hashtable对字符串进行碰撞利用hashtable对字符串进行过滤,两个字符数组之间的比较,对字符串数组进行过滤1.在一些字符串数组中,常会有重复的记录,比如手机号码,我们可以通过Hashtable来对其进行过滤publicStringcheckArray(Stringstr).Hashtablehash=newHashtable();for(inti=0;istr.length;i+).if(!hash.containsKey(stri)has
12、h.put(stri,stri);Enumerationenumeration=hash.keys();Stringstr_new=newStringhash.size();inti=0;while(enumeration.hasMoreElements().str_newi=enumeration.nextElement().toString();i+;returnstr_new;示例: String mobile=13811071500,13811071500,13811071501,13811071503,13811071501; mobile=checkArray(mobile); f
13、or(int i=0;imobile.length;i+) System.out.println(mobilei); 输出结果为: 13811071503 13811071501 138110715002.A,B均为字符串数组,找出在A中存在,而在B中不存在的字符串 public String compareArray(String A,String B) Hashtable hash=new Hashtable(); Hashtable hash_new=new Hashtable(); for(int i=0;iB.length;i+) hash.put(Bi, Bi); for(int
14、i=0;iA.length;i+) if(!hash.containsKey(Ai) hash_new.put(Ai, Ai); String C=new Stringhash_new.size(); int i=0; Enumeration enumeration=hash_new.keys(); while(enumeration.hasMoreElements() Ci=enumeration.nextElement().toString(); i+; return C; 示例: String mobile1=13811071500,13811071501,13811071502,138
15、11071503,13811071504; String mobile2=13811071500,13811071505,13811071502,13811071506,13811071504; String mobile3=compareArray(mobile1,mobile2); for(int i=0;imobile3.length;i+) System.out.println(mobilei);输出结果: 13811071503 13811071501存在的问题:每次都是倒序,可以再对程序稍加改动,变成正序。 3.将一个字符串数组中某一个特定的字符串过滤掉/*/*检验一个字符串数组,
16、若包含某一特定的字符串,则将该字符串从数组中删除,返回剩余的字符串数组*paramstr_array字符串数组*paramstr_remove待删除的字符串*return过滤后的字符串*/publicStringremoveStrFromArray(Stringstr_array,Stringstr_remove).Hashtablehash=newHashtable();for(inti=0;istr_array.length;i+).if(!str_arrayi.equals(str_remove)hash.put(str_arrayi,str_arrayi);/生成一个新的数组Stringstr_new=newStringhash.size();inti=0;Enumerationenumeration=hash.keys();while(enumeration.hasMoreElements().str_newi=enumeration.nextElement().toString();i+;returnstr_new;