Java字符串處理:String類常用方法,搞定文本操作

在Java中,字符串是處理文本信息的基礎,而String類是Java中最常用的類之一,用於表示和操作文本數據。字符串本質上是字符的序列,而String類提供了豐富的方法來幫助我們完成各種文本操作,比如獲取長度、拼接、比較、分割等。

一、String類的基本特性

首先要了解String的一個重要特性:不可變性。這意味着一旦創建了一個String對象,它的內容就無法被修改。如果需要修改字符串,實際上是創建了一個新的String對象。

例如:

String original = "Hello";
original = original + " World"; // 這裏創建了新的字符串對象

二、常用方法及示例

接下來,我們將介紹String類中最常用的方法,每個方法都配有代碼示例和說明。

1. 獲取字符串長度:length()

length()方法用於返回字符串的長度(即字符的個數)。

示例:

String str = "Java Programming";
int len = str.length();
System.out.println("字符串長度:" + len); // 輸出:18

2. 獲取指定位置的字符:charAt(int index)

charAt(index)方法返回字符串中指定索引位置的字符(索引從0開始)。

示例:

String str = "Hello";
char firstChar = str.charAt(0); // 獲取第0個字符(第一個字符)
char lastChar = str.charAt(str.length() - 1); // 獲取最後一個字符
System.out.println("第一個字符:" + firstChar); // 輸出:H
System.out.println("最後一個字符:" + lastChar); // 輸出:o

3. 字符串拼接:concat(String str)+ 運算符

concat()方法用於將當前字符串與另一個字符串拼接。此外,Java也支持用+運算符進行字符串拼接。

示例:

String a = "Hello";
String b = "World";

// 使用concat()
String c = a.concat(b);
System.out.println(c); // 輸出:HelloWorld

// 使用+運算符
String d = a + " " + b;
System.out.println(d); // 輸出:Hello World

4. 比較字符串內容:equals(String str)

equals()方法用於比較兩個字符串的內容是否相等。注意:不要使用==運算符比較字符串內容,因爲==比較的是對象的內存地址(除非字符串是常量且位於常量池)。

示例:

String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc"); // 新創建的對象,與s1地址不同

System.out.println(s1 == s2); // true(常量池複用,可能相同)
System.out.println(s1 == s3); // false(s3是新對象,地址不同)
System.out.println(s1.equals(s2)); // true(內容相同)
System.out.println(s1.equals(s3)); // true(內容相同)

重要結論:比較字符串內容必須用equals(),而非==

5. 截取子串:substring(int beginIndex)substring(int beginIndex, int endIndex)

  • substring(beginIndex):從beginIndex索引開始截取到字符串末尾。
  • substring(beginIndex, endIndex):截取從beginIndexendIndex-1的子串(左閉右開)。

示例:

String s = "HelloWorld";

// 從索引2開始截取到末尾
String part1 = s.substring(2);
System.out.println(part1); // 輸出:lloWorld

// 截取索引2到5(不包含5)
String part2 = s.substring(2, 5);
System.out.println(part2); // 輸出:llo

6. 替換字符/子串:replace(char oldChar, char newChar)replace(CharSequence target, CharSequence replacement)

replace()可以替換單個字符或整個子串:
- 替換單個字符:replace(oldChar, newChar)
- 替換子串:replace(target, replacement)

示例:

String s = "Hello Java";

// 替換單個字符 'H' 爲 'h'
String newS1 = s.replace('H', 'h');
System.out.println(newS1); // 輸出:hllo Java

// 替換子串 "Java" 爲 "Python"
String newS2 = s.replace("Java", "Python");
System.out.println(newS2); // 輸出:Hello Python

7. 去除首尾空格:trim()

trim()方法移除字符串首尾的空白字符(空格、製表符、換行符等)。

示例:

String s = "   Java String   ";
String trimmed = s.trim();
System.out.println(trimmed); // 輸出:Java String

8. 分割字符串:split(String regex)

split()方法根據指定的分隔符(正則表達式)將字符串分割成多個子串,並返回字符串數組。

示例:

String csv = "apple,banana,orange,grape";
String[] fruits = csv.split(","); // 按逗號分割
for (String fruit : fruits) {
    System.out.println(fruit); // 依次輸出每個水果
}
// 輸出:
// apple
// banana
// orange
// grape

9. 轉換大小寫:toLowerCase()toUpperCase()

  • toLowerCase():將字符串所有字符轉爲小寫。
  • toUpperCase():將字符串所有字符轉爲大寫。

示例:

String s = "Hello World";
String lower = s.toLowerCase();
String upper = s.toUpperCase();
System.out.println(lower); // 輸出:hello world
System.out.println(upper); // 輸出:HELLO WORLD

10. 判斷空/空白字符串:isEmpty()isBlank()

  • isEmpty():判斷字符串長度是否爲0(僅長度爲0返回true)。
  • isBlank()(Java 11+):判斷字符串是否爲空白(長度爲0或僅包含空白字符,如空格、製表符等)。

示例:

String emptyStr = "";
String blankStr = "   ";
String normalStr = "Java";

System.out.println(emptyStr.isEmpty()); // true
System.out.println(emptyStr.isBlank()); // true

System.out.println(blankStr.isEmpty()); // false(長度爲3)
System.out.println(blankStr.isBlank()); // true(包含空白字符)

System.out.println(normalStr.isEmpty()); // false
System.out.println(normalStr.isBlank()); // false

三、注意事項

  1. 不可變性:修改字符串時會創建新對象,頻繁修改可能導致性能問題(如循環中拼接字符串)。此時更推薦使用StringBuilderStringBuffer(線程安全)。
  2. 避免使用==比較內容:除非確定是同一個對象,否則始終用equals()比較字符串內容。
  3. 特殊字符處理:使用split()等方法時,如果分隔符是正則表達式中的特殊字符(如.*等),需要轉義(如split("\\.")處理以.分割)。

四、總結

掌握String類的常用方法是Java文本操作的基礎。通過本文介紹的length()charAt()equals()substring()等方法,你可以輕鬆完成大部分文本處理需求,例如獲取信息、拼接內容、格式轉換、分割數據等。隨着Java版本更新(如isBlank()),更多實用方法會不斷加入,持續學習和實踐將幫助你更高效地處理字符串。

小夜