regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len);regionMatches(int toffset,String other,int ooffset,int len); 上述两个方法用来比较两个字符串中指定区域的子串。入口参数中,用toffset和ooffset分别指出当前字符串中的子串起始位置和要与之比较的字符串中的子串起始地址;len 指出比较长度。前一种方法可区分大写字母和小写字母,如果在 boolean ignoreCase处写 true,表示将不区分大小写,写false则表示将区分大小写。而后一个方法认为大小写字母有区别。由此可见,实际上前一个方法隐含了后一个方法的功能。比如: String s1= “tsinghua” String s2=“it is TsingHua”; s1.regionMatches(0,s2,6,7); 最后一个语句表示将s1字符串从第0个字符“t”开始和s2字符串的第6个字符“T”开始逐个比较,共比较7对字符,由于区分大小写,所以结果为false。 但如果最后一个语句改为: s1.regionMatches(true,0,s2,6,7); 则结果为true,因为入口参数中true表示忽略大小写区别。
我们可以使用这个方法来判断某一个字符串是否以某个或某段具体的串为结,我们可以这样使用:
private static boolean endsWith(String str, String suffix, boolean ignoreCase) { if(str == null || suffix == null) return str == null && suffix == null; if(suffix.length() > str.length()) { return false; } else { int strOffset = str.length() - suffix.length(); return str.regionMatches(ignoreCase, strOffset, suffix, 0, suffix.length()); } }