当前位置:   article > 正文

java ignorecase_Spring中StringUtils.endsWithIgnoreCase方法的一个bug

endswithignorecase

由于项目的需要看了Spring框架StringUtils的源码,发现其中一个方法有点问题,以下是其方法的源代码:

/**

* Test if the given String ends with the specified suffix,

* ignoring upper/lower case.

* @param str the String to check

* @param suffix the suffix to look for

* @see java.lang.String#endsWith

*/

public static boolean endsWithIgnoreCase(String str, String suffix) {

if (str == null || suffix == null) {

return false;

}

if (str.endsWith(suffix)) {

return true;

}

if (str.length() < suffix.length()) {

return false;

}

String lcStr = str.substring(suffix.length()).toLowerCase();

String lcSuffix = suffix.toLowerCase();

return lcStr.equals(lcSuffix);

}

这个方法是不能实现做到像代码说明中那样的功能的,这里我们可以给出一个小小的修改(由我同学提供的)后的版本:

public static boolean endsWithIgnoreCase(String str, String suffix) {

if (str == null || suffix == null) {

return false;

}

if (str.endsWith(suffix)) {

return true;

}

if (str.length() < suffix.length()) {

return false;

}

String lcStr = str.substring(str.length()-suffix.length()).toLowerCase();

String lcSuffix = suffix.toLowerCase();

return lcStr.equals(lcSuffix);

}

}

这里做的主要修改是:

把String lcStr = str.substring(suffix.length()).toLowerCase();改成

String lcStr = str.substring(str.length()-suffix.length()).toLowerCase();就能实现方法签名所宣称的功能。

notes:也有可能是小弟我理解错误了该方法,还没发邮件去确认这个问题。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号