1. 方法概述

regionMatches() 是 Java 中 String 类的一个实用方法,用于判断两个字符串的指定区域是否相等。以下是关键要点:

核心参数说明

  • ignoreCase:是否忽略大小写(true表示忽略,false表示区分大小写)
  • toffset:第一个字符串的起始比较索引
  • other:第二个字符串对象
  • ooffset:第二个字符串的起始比较索引
  • len:需要比较的字符长度

⚠️ 使用注意事项

  • 索引越界会抛出 StringIndexOutOfBoundsException
  • 空指针风险:若 othernull 会直接抛出 NullPointerException

2. 方法签名

Java 提供了两个重载版本:

// 区分大小写的版本
boolean regionMatches(int toffset, String other, int ooffset, int len)

// 可控制大小写敏感的版本
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

3. 示例代码

以下是一个典型用例,验证两个字符串的局部匹配:

@Test
public void whenCallRegionMatches_thenCorrect() {
    // 检查 "welcome to baeldung" 的子串(从索引11开始)
    // 是否与 "baeldung"(从索引0开始)的前8个字符完全匹配
    assertTrue("welcome to baeldung".regionMatches(false, 11, "baeldung", 0, 8));
}

代码解析

  • 主字符串 "welcome to baeldung" 从索引11开始截取
  • 目标字符串 "baeldung" 从索引0开始截取
  • 比较长度为8个字符
  • false 表示严格区分大小写(若改为 true,则 "Baeldung" 也能匹配)

4. 常见踩坑点

🚫 错误示例

// 错误:索引越界(主字符串长度不足)
"short".regionMatches(0, "longer", 0, 10); // 抛出异常

正确实践

  • 先通过 length() 检查字符串长度
  • 复杂场景建议封装工具方法处理边界条件

💡 经验之谈
这个方法在处理国际化文本或局部字符串匹配时特别高效,避免了手动截取子串再比较的繁琐操作。