天天看點

java對字元串操作大全

一.Java字元串類基本概念

在JAVA語言中,字元串資料實際上由String類所實作的。Java字元串類分為兩類:一類是在程式中不會被改變長度的不變字元串;二類是在程式中會被改變長度的可變字元串。Java環境為了存儲和維護這兩類字元串提供了 String和StringBuffer兩個類。

 一、建立字元串

例: Stringstr=new("This is a String");

或者 Stringstr="This is a String";

 二、得到字元串對象的有關資訊

1.通過調用length()方法得到String的長度.

例:

String str="Thisis a String";

int len =str.length();

2.StringBuffer類的capacity()方法與String類的 length()的方法類似,但是她測試是配置設定給StringBuffer的記憶體空間的大小,而不是目前被使用了的記憶體空間。

3.如果想确定字元串中指定字元或子字元串在給定字元串的位置,可以用 indexOf()和lastIndexOf()方法。

String str="Thisis a String";

Int index1 =str.indexOf("i");   //index=2

Intindex2=str.indexOf(‘i‘,index+1);   //index2=5

Intindex3=str.lastIndexOf("I");   //index3=15

Intindex4=str.indexOf("String");  //index4=10

三、String對象的比較和操作

1.String對象的比較

String類的equals()方法用來确定兩個字元串是否相等。

String str="Thisis a String";

Boolean result=str.equals("This is another String");

//result=false

2.String對象的通路

A、方法charAt()用以得到指定位置的字元。

String str="Thisis a String";

char chr=str.charAt(3); //chr="i"

B、方法getChars()用以得到字元串的一部分字元串

public voidgetChars(int srcBegin,intsrcEnd,char[]dst,intdstBegin)

String str="Thisis a String";

Char chr =new char[10];

Str.getChars(5,12,chr,0);  //chr="isa St"

C、subString()是提取字元串的另一種方法,它可以指定從何處開始提取字元串以及何處結束。

3.操作字元串

A、replace()方法可以将字元串中的一個字元替換為另一個字元。

String str="Thisis a String";

String str1=str.replace(‘T‘,‘t‘); //str1="thisis a String"

B、concat()方法可以把兩個字元串合并為一個字元串。

String str="Thisis a String";

String str1=str.concat("Test"); //str1="Thisis a String Test"

C、toUpperCase()和toLowerCase()方法分别實作字元串大小寫的轉換。

String str="THISIS A STRING";

String str1=str.toLowerCase(); //str1="thisis a string";

D、trim()方法可以将字元串中開頭和結尾處的空格去掉.

String str="Thisis a String   ";

String str1=str.trim();   //str1="This is a String"

E、String類提供靜态方法valueOf(),它可以将任何類型的資料對象轉換為一個字元串。如

System.out.println(String,ValueOf(math,PI));

四、修改可變字元串

StringBuffer類為可變字元串的修改提供了3種方法,在字元串中間插入和改變某個位置所在的字元。

1.在字元串後面追加:用append()方法将各種對象加入到字元串中。

2.在字元串中間插入:用insert()方法。例

StringBuffer str=new StringBuffer("Thisis a String");

Str.insert(9,"test");

System.out.println(str.toString());

這段代碼輸出為:Thisis a test String

3.改變某個位置所在的字元,用setCharAt()方法。

StringBuffer sb =new StringBuffer("aaaaaa");      

sb.setCharAt(2, “b”); // 結果aabaaa

二.字元串分割

1.利用字元串類的split方法進行分割

    public String[] splitString(String str,String sdelimiter)...{

        String[] array=str.split(sdelimiter);

        return array;

    }

2.利用StringTokenizer來進行字元串分割

    public String[] useStringTokenizer(String str,String sdelimiter)...{

        StringTokenizer token=new StringTokenizer(str,sdelimiter);

        String[] array=new String[token.countTokens()];

        int i=0;

        while(token.hasMoreTokens())...{

            array[i]=token.nextToken();

            i++;

        }

        return array;

    }

三.字元串數組排序

    public String[] sort(String[] str,int flag)...{

        if(str==null||str.length==0)

            throw new IllegalArgumentException();

        String temp=str[0];

        //順序排列 ,即從小到大

        if(flag==0)...{

            for(int i=0;i<str.length-1;i++)...{

                for(int j=i+1;j<str.length;j++)...{

                    if(str[i].compareTo(str[j])>0)...{

                        temp=str[i];

                        str[i]=str[j];

                        str[j]=temp;

                    }

                }

            }

        }

        else if(flag==1)...{//倒序排列

            for(int i=0;i<str.length-1;i++)...{

                for(int j=i+1;j<str.length;j++)...{

                    if(str[i].compareTo(str[j])<0)...{

                        temp=str[i];

                        str[i]=str[j];

                        str[j]=temp;

                    }

                }

            }

        }

        return str;

    }

四.使用Hashtable對字元串進行碰撞

利用hashtable對字元串進行過濾,兩個字元數組之間的比較,對字元串數組進行過濾

1.在一些字元串數組中,常會有重複的記錄,比如手機号碼,我們可以通過Hashtable來對其進行過濾

public String[] checkArray(String[] str)...{

        Hashtable<String, String> hash=new Hashtable<String, String>();

        for(int i=0;i<str.length;i++)...{

            if(!hash.containsKey(str[i]))

                hash.put(str[i], str[i]);

        }

        Enumeration enumeration=hash.keys();

        String[] str_new=new String[hash.size()];

        int i=0;

        while(enumeration.hasMoreElements())...{

            str_new[i]=enumeration.nextElement().toString();

            i++;

        }

        return str_new;

    }

示例:

        String[]mobile={"13811071500","13811071500","13811071501","13811071503","13811071501"};

        mobile=checkArray(mobile);

        for(int i=0;i<mobile.length;i++)

           System.out.println(mobile[i]);

       輸出結果為:

        13811071503

        13811071501

        13811071500

2.A,B均為字元串數組,找出在A中存在,而在B中不存在的字元串

    public String[] compareArray(String[] A,String[] B){

        Hashtable<String, String> hash=newHashtable<String, String>();

        Hashtable<String, String>hash_new=new Hashtable<String, String>();

        for(int i=0;i<B.length;i++)

            hash.put(B[i], B[i]);

        for(int i=0;i<A.length;i++){

           if(!hash.containsKey(A[i]))

               hash_new.put(A[i], A[i]);

        }

        String[] C=new String[hash_new.size()];

        int i=0;

        Enumeration enumeration=hash_new.keys();

        while(enumeration.hasMoreElements()){

           C[i]=enumeration.nextElement().toString();

            i++;

        }

        return C;

    }

示例:

        String[] mobile1={"13811071500","13811071501","13811071502","13811071503","13811071504"};

        String[]mobile2={"13811071500","13811071505","13811071502","13811071506","13811071504"};

        String[]mobile3=compareArray(mobile1,mobile2);

        for(int i=0;i<mobile3.length;i++)

           System.out.println(mobile[i]);

輸出結果:

    13811071503

    13811071501

存在的問題:

每次都是倒序,可以再對程式稍加改動,變成正序。

3.将一個字元串數組中某一個特定的字元串過濾掉

    public String[] removeStrFromArray(String[] str_array,String

str_remove)...{

        Hashtable<String, String> hash=new Hashtable<String, String>();

        for(int i=0;i<str_array.length;i++)...{

            if(!str_array[i].equals(str_remove))

                hash.put(str_array[i], str_array[i]);

        }

        //生成一個新的數組

        String[] str_new=new String[hash.size()];

        int i=0;

        Enumeration enumeration=hash.keys();

        while(enumeration.hasMoreElements())...{

            str_new[i]=enumeration.nextElement().toString();

            i++;

        }

        return str_new;

    }

 文章摘自百度文庫。

一.Java字元串類基本概念

在JAVA語言中,字元串資料實際上由String類所實作的。Java字元串類分為兩類:一類是在程式中不會被改變長度的不變字元串;二類是在程式中會被改變長度的可變字元串。Java環境為了存儲和維護這兩類字元串提供了 String和StringBuffer兩個類。

 一、建立字元串

例: Stringstr=new("This is a String");

或者 Stringstr="This is a String";

 二、得到字元串對象的有關資訊

1.通過調用length()方法得到String的長度.

例:

String str="Thisis a String";

int len =str.length();

2.StringBuffer類的capacity()方法與String類的 length()的方法類似,但是她測試是配置設定給StringBuffer的記憶體空間的大小,而不是目前被使用了的記憶體空間。

3.如果想确定字元串中指定字元或子字元串在給定字元串的位置,可以用 indexOf()和lastIndexOf()方法。

String str="Thisis a String";

Int index1 =str.indexOf("i");   //index=2

Intindex2=str.indexOf(‘i‘,index+1);   //index2=5

Intindex3=str.lastIndexOf("I");   //index3=15

Intindex4=str.indexOf("String");  //index4=10

三、String對象的比較和操作

1.String對象的比較

String類的equals()方法用來确定兩個字元串是否相等。

String str="Thisis a String";

Boolean result=str.equals("This is another String");

//result=false

2.String對象的通路

A、方法charAt()用以得到指定位置的字元。

String str="Thisis a String";

char chr=str.charAt(3); //chr="i"

B、方法getChars()用以得到字元串的一部分字元串

public voidgetChars(int srcBegin,intsrcEnd,char[]dst,intdstBegin)

String str="Thisis a String";

Char chr =new char[10];

Str.getChars(5,12,chr,0);  //chr="isa St"

C、subString()是提取字元串的另一種方法,它可以指定從何處開始提取字元串以及何處結束。

3.操作字元串

A、replace()方法可以将字元串中的一個字元替換為另一個字元。

String str="Thisis a String";

String str1=str.replace(‘T‘,‘t‘); //str1="thisis a String"

B、concat()方法可以把兩個字元串合并為一個字元串。

String str="Thisis a String";

String str1=str.concat("Test"); //str1="Thisis a String Test"

C、toUpperCase()和toLowerCase()方法分别實作字元串大小寫的轉換。

String str="THISIS A STRING";

String str1=str.toLowerCase(); //str1="thisis a string";

D、trim()方法可以将字元串中開頭和結尾處的空格去掉.

String str="Thisis a String   ";

String str1=str.trim();   //str1="This is a String"

E、String類提供靜态方法valueOf(),它可以将任何類型的資料對象轉換為一個字元串。如

System.out.println(String,ValueOf(math,PI));

四、修改可變字元串

StringBuffer類為可變字元串的修改提供了3種方法,在字元串中間插入和改變某個位置所在的字元。

1.在字元串後面追加:用append()方法将各種對象加入到字元串中。

2.在字元串中間插入:用insert()方法。例

StringBuffer str=new StringBuffer("Thisis a String");

Str.insert(9,"test");

System.out.println(str.toString());

這段代碼輸出為:Thisis a test String

3.改變某個位置所在的字元,用setCharAt()方法。

StringBuffer sb =new StringBuffer("aaaaaa");      

sb.setCharAt(2, “b”); // 結果aabaaa

二.字元串分割

1.利用字元串類的split方法進行分割

    public String[] splitString(String str,String sdelimiter)...{

        String[] array=str.split(sdelimiter);

        return array;

    }

2.利用StringTokenizer來進行字元串分割

    public String[] useStringTokenizer(String str,String sdelimiter)...{

        StringTokenizer token=new StringTokenizer(str,sdelimiter);

        String[] array=new String[token.countTokens()];

        int i=0;

        while(token.hasMoreTokens())...{

            array[i]=token.nextToken();

            i++;

        }

        return array;

    }

三.字元串數組排序

    public String[] sort(String[] str,int flag)...{

        if(str==null||str.length==0)

            throw new IllegalArgumentException();

        String temp=str[0];

        //順序排列 ,即從小到大

        if(flag==0)...{

            for(int i=0;i<str.length-1;i++)...{

                for(int j=i+1;j<str.length;j++)...{

                    if(str[i].compareTo(str[j])>0)...{

                        temp=str[i];

                        str[i]=str[j];

                        str[j]=temp;

                    }

                }

            }

        }

        else if(flag==1)...{//倒序排列

            for(int i=0;i<str.length-1;i++)...{

                for(int j=i+1;j<str.length;j++)...{

                    if(str[i].compareTo(str[j])<0)...{

                        temp=str[i];

                        str[i]=str[j];

                        str[j]=temp;

                    }

                }

            }

        }

        return str;

    }

四.使用Hashtable對字元串進行碰撞

利用hashtable對字元串進行過濾,兩個字元數組之間的比較,對字元串數組進行過濾

1.在一些字元串數組中,常會有重複的記錄,比如手機号碼,我們可以通過Hashtable來對其進行過濾

public String[] checkArray(String[] str)...{

        Hashtable<String, String> hash=new Hashtable<String, String>();

        for(int i=0;i<str.length;i++)...{

            if(!hash.containsKey(str[i]))

                hash.put(str[i], str[i]);

        }

        Enumeration enumeration=hash.keys();

        String[] str_new=new String[hash.size()];

        int i=0;

        while(enumeration.hasMoreElements())...{

            str_new[i]=enumeration.nextElement().toString();

            i++;

        }

        return str_new;

    }

示例:

        String[]mobile={"13811071500","13811071500","13811071501","13811071503","13811071501"};

        mobile=checkArray(mobile);

        for(int i=0;i<mobile.length;i++)

           System.out.println(mobile[i]);

       輸出結果為:

        13811071503

        13811071501

        13811071500

2.A,B均為字元串數組,找出在A中存在,而在B中不存在的字元串

    public String[] compareArray(String[] A,String[] B){

        Hashtable<String, String> hash=newHashtable<String, String>();

        Hashtable<String, String>hash_new=new Hashtable<String, String>();

        for(int i=0;i<B.length;i++)

            hash.put(B[i], B[i]);

        for(int i=0;i<A.length;i++){

           if(!hash.containsKey(A[i]))

               hash_new.put(A[i], A[i]);

        }

        String[] C=new String[hash_new.size()];

        int i=0;

        Enumeration enumeration=hash_new.keys();

        while(enumeration.hasMoreElements()){

           C[i]=enumeration.nextElement().toString();

            i++;

        }

        return C;

    }

示例:

        String[] mobile1={"13811071500","13811071501","13811071502","13811071503","13811071504"};

        String[]mobile2={"13811071500","13811071505","13811071502","13811071506","13811071504"};

        String[]mobile3=compareArray(mobile1,mobile2);

        for(int i=0;i<mobile3.length;i++)

           System.out.println(mobile[i]);

輸出結果:

    13811071503

    13811071501

存在的問題:

每次都是倒序,可以再對程式稍加改動,變成正序。

3.将一個字元串數組中某一個特定的字元串過濾掉

    public String[] removeStrFromArray(String[] str_array,String

str_remove)...{

        Hashtable<String, String> hash=new Hashtable<String, String>();

        for(int i=0;i<str_array.length;i++)...{

            if(!str_array[i].equals(str_remove))

                hash.put(str_array[i], str_array[i]);

        }

        //生成一個新的數組

        String[] str_new=new String[hash.size()];

        int i=0;

        Enumeration enumeration=hash.keys();

        while(enumeration.hasMoreElements())...{

            str_new[i]=enumeration.nextElement().toString();

            i++;

        }

        return str_new;

    }

 文章摘自百度文庫。

繼續閱讀