JSTL fn:split函数分割异常求助:~$分割符未按预期工作
解决JSTL fn:split分割字符串不符合预期的问题
嘿,我来帮你搞定这个问题!你遇到的情况是因为JSTL的fn:split函数使用正则表达式作为分隔符,而你用的$是正则里的特殊元字符,没转义才导致了意外结果。
问题原因
在正则表达式里,$是表示字符串或行结尾的特殊元字符。你直接写'~$'当分隔符时,正则引擎不会把它当成字面量的~$组合来匹配,反而会解析成“匹配位于字符串末尾的~”,这完全不符合你想匹配~$固定序列的需求。原字符串里的单独$也会被错误解析,导致额外的分割,最终得到了三个部分。
解决方案
要匹配字面量的$,你得在正则里用\转义它;同时在JSP的EL表达式中,反斜杠\本身也需要再转义一次(因为EL会把单个\当成转义符),所以最终的分隔符要写成'~\\$'。
修改后的代码:
<c:set var="stringArrayName" value="${fn:split(element, '~\\$')}" />
这样正则引擎就能正确识别~$作为完整的分隔符序列,分割你的字符串"abc~$pqr$xyz"后,就能得到你预期的两个部分:abc和pqr$xyz啦。
内容的提问来源于stack exchange,提问作者Vishal Gajera
相关产品推荐
相关产品推荐

