1. 方法概述
regionMatches()
是 Java 中 String
类的一个实用方法,用于判断两个字符串的指定区域是否相等。以下是关键要点:
✅ 核心参数说明
ignoreCase
:是否忽略大小写(true
表示忽略,false
表示区分大小写)toffset
:第一个字符串的起始比较索引other
:第二个字符串对象ooffset
:第二个字符串的起始比较索引len
:需要比较的字符长度
⚠️ 使用注意事项
- 索引越界会抛出
StringIndexOutOfBoundsException
- 空指针风险:若
other
为null
会直接抛出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()
检查字符串长度 - 复杂场景建议封装工具方法处理边界条件
💡 经验之谈:
这个方法在处理国际化文本或局部字符串匹配时特别高效,避免了手动截取子串再比较的繁琐操作。