Java String contains()

contains() 方法用來檢查字串是否包含指定的子字串。

語法

string.contains(CharSequence s)
  • s:要搜尋的子字串
  • 回傳:包含則回傳 true,否則回傳 false

範例

String s = "Hello World";

System.out.println(s.contains("World"));  // true
System.out.println(s.contains("Java"));   // false
System.out.println(s.contains("hello"));  // false(區分大小寫)
System.out.println(s.contains(""));       // true(空字串)

忽略大小寫

String s = "Hello World";
String target = "hello";

// 方法一:轉換成相同大小寫
boolean contains = s.toLowerCase().contains(target.toLowerCase());
System.out.println(contains);  // true

// 方法二:使用正規表達式
boolean contains2 = s.matches("(?i).*hello.*");
System.out.println(contains2);  // true

startsWith()

檢查字串是否以指定字串開頭:

String s = "Hello World";

System.out.println(s.startsWith("Hello"));  // true
System.out.println(s.startsWith("World"));  // false
System.out.println(s.startsWith(""));       // true

// 從指定位置開始檢查
System.out.println(s.startsWith("World", 6));  // true

endsWith()

檢查字串是否以指定字串結尾:

String s = "Hello World";

System.out.println(s.endsWith("World"));  // true
System.out.println(s.endsWith("Hello"));  // false
System.out.println(s.endsWith(""));       // true

實際應用

過濾清單

String[] files = {"image.jpg", "document.pdf", "photo.png", "notes.txt"};

// 找出所有圖片檔
for (String file : files) {
    if (file.endsWith(".jpg") || file.endsWith(".png")) {
        System.out.println(file);
    }
}

檢查 URL

String url = "https://www.example.com/page";

if (url.startsWith("https://")) {
    System.out.println("安全連線");
}

if (url.contains("example.com")) {
    System.out.println("來自 example.com");
}

檢查 Email

String email = "user@example.com";

if (email.contains("@") && email.endsWith(".com")) {
    System.out.println("可能是有效的 email");
}

簡單的搜尋功能

String[] articles = {
    "Java 入門教學",
    "Python 基礎語法",
    "Java 物件導向",
    "JavaScript 教學"
};

String keyword = "Java";

System.out.println("搜尋結果:");
for (String article : articles) {
    if (article.contains(keyword)) {
        System.out.println("- " + article);
    }
}

輸出:

搜尋結果:
- Java 入門教學
- Java 物件導向
- JavaScript 教學

contains vs indexOf

contains() 內部使用 indexOf() 實作:

String s = "Hello World";

// 兩種方式結果相同
boolean result1 = s.contains("World");
boolean result2 = s.indexOf("World") != -1;

// contains() 更直觀易讀
if (s.contains("World")) {
    // ...
}