Java 快速導覽 - String 類別

程式中經常需要處理字串 (string) ,因此 Java 有個獨立的 String 型態,專門用來處理字串。



建立字串很簡單,可以利用字串的字面常數 (literal) ,也就是兩個雙引號圍住的任何 Unicode 字元,如
String a = "hello";
String b = "甲乙丙丁";
String c = ""; //這是一個空字串


也可以利用 String 類別的建構子 (constructor) 建立字串,如
String a = new String({ 'h', 'e', 'l', 'l', 'o'});
String b = new String("甲乙丙丁");
String c = new String(); //這是一個空字串


String() 是多載 (overloading) 的建構子,可接受多種不同的參數 (parameter) 建立字串。


String 類別中也有許多方法 (method) 可供運用,例如以下方法計算字串長度,也就是字串內含 Unicode 字元的個數
方法描述
int length()計算字串內 Unicode 字元的個數


以下方法用於連接字串
方法描述
String concat(String str)將 str 接到字串的後面


以下方法用於格式化字串
方法描述
static String format(Locale l, String format, Object... args)
static String format(String format, Object... args)
格式化字串


以下方法用於拆開字串
方法描述
String[] split(String regex)
String[] split(String regex, int limit)
將原字串利用 regex 拆開存入字串陣列,然後回傳這個字串陣列


以下方法用於取得子字串
方法描述
String substring(int beginIndex, int endIndex)回傳從 beginIndex 到 endIndex 之間的子字串
String substring(int beginIndex)回傳從 beginIndex 到結尾的子字串
CharSequence subSequence(int beginIndex, int endIndex)回傳從 beginIndex 到 endIndex 之間的 CharSequence 型態物件
String trim()回傳去除首尾空白符號的子字串


以下方法用於搜尋
方法描述
int indexOf(int ch)回傳第一個 ch 字元的索引值
int lastIndexOf(int ch)回傳最後一個 ch 字元的索引值
int indexOf(int ch, int fromIndex)回傳 fromIndex 之後的第一個 ch 字元的索引值
int lastIndexOf(int ch, int fromIndex)回傳 fromIndex 之前的最後一個 ch 字元的索引值
int indexOf(String str)回傳第一個子字串 str 開始的的索引值
int lastIndexOf(String str)回傳最後一個子字串 str 開始的的索引值
boolean contains(CharSequence s)判斷字串中是否包含 s


以下方法用於置換
方法描述
String replace(char oldChar, char newChar)將 oldChar 字元以 newChar 置換
String replace(CharSequence target, CharSequence replacement)將 target 子字串以 replacement 置換
String replaceAll(String regex, String replacement)將符合 regex 置換成 replacement
String replaceFirst(String regex, String replacement)將第一個符合 regex 的子字串置換成 replacement


以下方法用於比較
方法描述
boolean endsWith(String suffix)判斷字串是否以 suffix 結尾
boolean startsWith(String prefix)判斷字串是否以 prefix 開頭
boolean startsWith(String prefix, int offset)判斷從 offset 開始的子字串是否為 prefix
int compareTo(String anotherString)逐字元比較原字串與 anotherString ,若無不同,也就是兩個字串中的每個字元都相同就回傳 0 ,若有不同則回傳長度差或第一個不同字元的 Unicode 差值
int compareToIgnoreCase(String str)逐字元比較原字串與 anotherString ,不考慮大小寫的分別,若無不同,也就是兩個字串中的每個字元都相同就回傳 0 ,若有不同則回傳長度差或第一個不同字元的 Unicode 差值
boolean equals(Object anObject)判斷字串是否與 anObject 相同
boolean equalsIgnoreCase(String anotherString)判斷字串是否與 anotherString 相同,不考慮大小寫的分別
boolean regionMatches(int toffset, String other, int ooffset, int len)判斷從 toffset 開始長度為 len 的子字串,是否與 other 從 ooffset開始長度為 len 的子字串相同
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)判斷從 toffset 開始長度為 len 的子字串,是否與 other 從 ooffset開始長度為 len 的子字串相同, ignoreCase 提供是否要忽略文大小寫字母
boolean matches(String regex)判斷字串是否符合 regex


以下方法用於轉換英文字母的大小寫
方法描述
String toLowerCase()將字串中所有英文字母改為小寫
String toUpperCase()將字串中所有英文字母改為大寫


以下例子簡單示範
class StringDemo {
    public static void main(String[] args) {
        String a = "Imagination is more important than knowledge.";
        String b = "He who has hope has everything.";
        String c = "台上一分鐘,台下十年功。";
        
        System.out.println(a.length());
        System.out.println(b.length());
        System.out.println(c.length());
        System.out.println(a.substring(20, 29));
        System.out.println(b.substring(11, 15));
        System.out.println(c.substring(2, 5));
        System.out.println(a.endsWith("knowledge."));
        System.out.println(b.endsWith("everything"));
        System.out.println(c.endsWith("十年功"));
        System.out.println(a.toUpperCase());
        System.out.println(b.toUpperCase());
        System.out.println(c.toUpperCase());
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:SringDemo.java
    功能:示範物件導向的基本觀念 
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下







沒有留言: