今天遇到一個很納悶的事情,就是使用jstl的split函數。
split方法:fn:split(string, separator)
返回一個數組,以參數separator 爲分割符分割參數string,分割後的每一部分就是數組的一個元素。
實 現原理:jstl的split方法在org.apache.taglibs.standard.functions.Functions中實現。其中對 separator進行了以下處理setMaxDelimCodePoint(),該方法是求出separator中字符中ASCII碼最大的字符。如 separator = ‘AB’ 則separator = ‘B’。
使用最大ASCII碼最大的字符進行字符串拆分。
例如:String ss = "asdXsdsSXfghfXsdfsdf";
String[] s = split(ss, "SX"); //此處split方法爲jstl的原生方法
拆出來的s的值爲[asd, sds, fghf, sdfsdf],而並不是[asdXsds,fghfXsdfsdf]
按jstl的實現原理不難解釋:S的ASCII碼83,X的ASCII碼88,因而jstl使用X來對字符ss進行拆分。
總結:jstl的split方法是按照字符拆分而不是按字符串拆分,並且使用字符串中 ASCII碼最大的字符來拆 .