问答详情
源自:4-1 JSTL函数之常用函数(Ⅰ)

问一个神奇的问题:

<c:out value="${fn:endsWith('helle','e') }"></c:out>

<c:out value="${fn:endsWith('hhlle','e') }"></c:out>

访问的时候显示 false true 。 为什么啊啊????

提问者:慕粉3904766 2016-10-04 15:11

个回答

  • 蜗牛__
    2016-10-05 19:41:07
    已采纳

    public static boolean endsWith(String input, String substring) {
       if(input == null) {
           input = "";
       }

       if(substring == null) {
           substring = "";
       }

       int index = input.indexOf(substring);
       return index == -1?false:(index == 0 && substring.length() == 0?true:index == input.length() - substring.length());
    }

    这是它的源码,你看了这个应该就明白了,

    最后index == input.length() - substring.length(),在helle中,input.length()为5,而substring.length()为1,

    而index为1,所以index!=5-1,所以返回false