Java中的String类提供了regionMatches方法,专门用于比较两个字符串的指定区域是否匹配,该方法自带忽略大小写的控制参数,非常适合实现局部字符串的忽略大小写匹配校验逻辑。

regionMatches方法参数说明
String类有两个重载的regionMatches方法,其中支持忽略大小写的版本参数定义如下:
public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
各个参数的含义如下:
- ignoreCase:是否忽略大小写,传入true表示忽略,false表示严格区分大小写
- toffset:当前字符串(调用方法的字符串对象)中待比较区域的起始索引
- other:用来比较的另一个字符串对象
- ooffset:另一个字符串中待比较区域的起始索引
- len:需要比较的字符长度
方法返回值为boolean类型,当两个指定区域的字符内容匹配时返回true,否则返回false。
忽略大小写的局部匹配实现步骤
实现忽略字母大小写的局部字符串范围匹配校验,只需要按照以下步骤操作即可:
- 确定调用方法的原字符串,以及需要比较的局部起始位置和比较长度
- 确定待比较的另一个字符串,以及它的局部起始位置
- 调用regionMatches方法时,将ignoreCase参数设置为true
- 根据方法返回值判断两个局部区域是否匹配
完整代码示例
下面的示例演示了如何校验字符串"HelloWorld"从索引5开始的3个字符,和字符串"WORLD"从索引0开始的3个字符是否忽略大小写匹配:
public class RegionMatchesDemo {
public static void main(String[] args) {
// 原字符串
String sourceStr = "HelloWorld";
// 待比较的字符串
String targetStr = "WORLD";
// 原字符串待比较起始索引:5,对应字符是W
int sourceOffset = 5;
// 目标字符串待比较起始索引:0,对应字符是W
int targetOffset = 0;
// 比较长度:3,即比较Wor和WOR
int compareLength = 3;
// 调用regionMatches,忽略大小写校验
boolean isMatch = sourceStr.regionMatches(true, sourceOffset, targetStr, targetOffset, compareLength);
System.out.println("局部区域是否匹配:" + isMatch);
// 再测试一个不匹配的场景
String targetStr2 = "word";
boolean isMatch2 = sourceStr.regionMatches(true, sourceOffset, targetStr2, targetOffset, compareLength);
System.out.println("第二个校验结果:" + isMatch2);
}
}
上述代码的输出结果为:
局部区域是否匹配:true 第二个校验结果:false
注意事项
使用regionMatches方法时需要注意以下几点:
- 起始索引不能超出字符串的长度范围,否则会抛出StringIndexOutOfBoundsException异常
- 比较长度不能超过两个待比较区域的剩余字符长度,也就是toffset + len不能超过原字符串长度,ooffset + len不能超过other字符串的长度
- 如果ignoreCase设置为false,那么该方法的行为和区分大小写的regionMatches重载方法一致
常见应用场景
该方法在实际开发中有很多适用场景,比如:
- 校验文件名后缀时,忽略大小写判断是否是指定类型,比如判断是否是.txt文件
- 校验用户输入的验证码时,只比较指定位置的字符是否匹配
- 处理协议头、关键字匹配时,忽略大小写校验局部内容是否符合预期
String.regionMatches局部字符串匹配忽略大小写Java字符串校验修改时间:2026-07-07 21:03:23