StringUtils类的ordinalIndexOf中有一个错误

* StringUtils.ordinalIndexOf(null, *, *) = -1
* StringUtils.ordinalIndexOf(*, null, *) = -1
* StringUtils.ordinalIndexOf("", "", *) = 0
* StringUtils.ordinalIndexOf("aabaabaa", "a", 1) = 0
* StringUtils.ordinalIndexOf("aabaabaa", "a", 2) = 1
* StringUtils.ordinalIndexOf("aabaabaa", "b", 1) = 2
* StringUtils.ordinalIndexOf("aabaabaa", "b", 2) = 5
* StringUtils.ordinalIndexOf("aabaabaa", "ab", 1) = 1
* StringUtils.ordinalIndexOf("aabaabaa", "ab", 2) = 4
* StringUtils.ordinalIndexOf("aabaabaa", "", 1) = 0
* StringUtils.ordinalIndexOf("aabaabaa", "", 2) = 0

这是方法中给的代码演示,执行后没有问题。

* StringUtils.ordinalIndexOf("aabaabaa", "aa", 1) = 1

这个代码演示时,发生问题,结果应该是:0 的,可是执行后结果却是:3 。

在StringUtils的类中有一个方法:ordinalIndexOf,这是一个私有的方法

将1028行代码:index = CharSequenceUtils.indexOf(str, searchStr, index + searchStr.length());

改成:index = CharSequenceUtils.indexOf(str, searchStr, index + searchStr.length() - 1); 

结果就正确了。

原文地址:https://www.cnblogs.com/yunwei1237/p/8243940.html