Java程式設計基礎(7)
Java基礎知識: Java字串的處理(2)
6. Java提取子字串(substring())
String 類的 substring() 方法用於對字串進行提取,該方法主要有兩種過載形式,下面分別介紹。
1. substring(int beginIndex) 形式
此方式用於提取從索引位置開始至結尾處的字串部分。呼叫時,括號中是需要提取字串的開始位置,方法的返回值是提取的字串。例如:
String str="我愛 Java 程式設計";
String result=str.substring(3);
System.out.println(result);//輸出:Java 程式設計
2. substring(int beginIndex,int endIndex) 形式
此方法中的 beginIndex 表示擷取的起始索引,擷取的字串中包括起始索引對應的字元;endIndex 表示結束索引,擷取的字串中不包括結束索引對應的字元,如果不指定 endIndex,則表示擷取到目標字串末尾。該方法用於提取位置 beginIndex 和位置 endIndex 位置之間的字串部分。
這裡需要特別注意的是, 對於開始位置 beginIndex, Java 是基於字串的首字元索引為 0 處理的,但是對於結束位置 endIndex,Java 是基於字串的首字元索引為 1 來處理的,如圖 1 所示。

圖1 字串中的字元索引
注意:substring() 方法是按字元擷取,而不是按位元組擷取。

7.Java分割字串(spilt())
String 類的 split() 方法可以按指定的分割符對目標字串進行分割,分割後的內容存放在字串陣列中。該方法主要有如下兩種過載形式:
str.split(String sign)
str.split(String sign,intlimit)
其中,str 為需要分割的目標字串;sign 為指定的分割符,可以是任意字串;limit 表示分割後生成的字串的限制個數,如果不指定,則表示不限制,直到將整個目標字串完全分割為止。

從輸出的結果可以看出,當指定分割字串後組成的陣列長度(大於或等於 1)時,陣列的前幾個元素為字串分割後的前幾個字元,而最後一個元素為字串的剩餘部分。
例如,在該例項中,指定了 arr2 的長度為 3,而字串 Colors 分割後組成的陣列長度為 5。因此會將 arr2 中的前兩個元素賦值為 Colors 分割後的前兩個字元,arr2 中的第 3 個元素為 Colors 字串的後 3 個字元組成的字串。
8.Java擷取新聞標題
在新聞網站中通常以列表的形式顯示最新新聞的動態標題。一般情況下,一行顯示一條新聞標題,而新聞標題往往比較長,因此需要對它進行擷取,將超出部分顯示成一個省略號“…”。

程式執行的結果為:

9.Java字串的替換(replace()、replaceFirst()和replaceAll())
在 Java 中,String 類提供了 3 種字串替換方法,分別是 replace()、replaceFirst() 和 replaceAll(),本文將詳細介紹它們的使用方法。
replace() 方法
replace() 方法用於將目標字串中的指定字元(串)替換成新的字元(串),其語法格式如下:
字串.replace(String oldChar, String newChar)
其中,oldChar 表示被替換的字串;newChar 表示用於替換的字串。replace() 方法會將字串中所有 oldChar 替換成 newChar。

replaceFirst() 方法
replaceFirst() 方法用於將目標字串中匹配某正則表示式的第一個子字串替換成新的字串,其語法形式如下:
字串.replaceFirst(String regex, String replacement)
其中,regex 表示正則表示式;replacement 表示用於替換的字串。例如:
String words="hello java,hello php";
String newStr=words.replaceFirst("hello","你好 ");
System.out.println(newStr);//輸出:你好 java,hello php
replaceAll() 方法
replaceAll() 方法用於將目標字串中匹配某正則表示式的所有子字串替換成新的字串,其語法形式如下:
字串.replaceAll(String regex, String replacement)
其中,regex 表示正則表示式,replacement 表示用於替換的字串。例如:
純文字複製
String words="hello java,hello php";
String newStr=words.replaceAll("hello","你好 ");
System.out.println(newStr);//輸出:你好 java,你好 php
10. Java字串的比較(equals()、equalsIgnoreCase()和compareTo())
在 Java 中,比較字串的常用方法有 3 個:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面詳細介紹這 3 個方法的使用。
equals() 方法
equals() 方法將逐個地比較兩個字串的每個字元是否相同。對於字元的大小寫,也在檢查的範圍之內。equals() 方法的語法格式如下:
字串1.equals(字串2);
例如:
String str1="abc";
String str2=newString("abc");
String str3="ABC";
System.out.println(str1.equals(str2));//輸出 true
System.out.println(str1.equals(str3));//輸出 false
equalsIgnoreCase() 方法
equalsIgnoreCase() 方法的作用和語法與 equals() 方法完全相同,唯一不同的是 equalsIgnoreCase() 比較時不區分大小寫。
例如:
String str1="abc";
String str2="ABC";
System.out.println(str1.equalsIgnoreCase(str2));//輸出 true
compareTo() 方法
compareTo() 方法用於按字典順序比較兩個字串的大小,該比較是基於字串各個字元的 Unicode 值。compareTo() 方法的語法格式如下:
str.compareTo(String otherstr);
它會按字典順序將 str 表示的字元序列與 otherstr 引數表示的字元序列進行比較。如果按字典順序 str 位於 otherster 引數之前,比較結果為一個負整數;如果 str 位於 otherstr 之後,比較結果為一個正整數;如果兩個字串相等,則結果為 0。
提示:如果兩個字串呼叫 equals() 方法返回 true,那麼呼叫 compareTo() 方法會返回 0。
