Velocity技术:如何检测并返回开头含空格的字符串
在Velocity中检测并筛选以空格开头的字符串
没问题,我来帮你搞定这个需求,毕竟Velocity的字符串处理和Java无缝衔接,上手并不难~
1. 单个字符串的检测逻辑
首先得先规避空指针和空字符串的问题(这也是你之前看到的非空检测问题的核心),再判断字符串是否以空格开头。Velocity里可以直接调用Java String类的方法,用startsWith(' ')就能实现:
#if($targetStr != null && $targetStr != '' && $targetStr.startsWith(' ')) 该字符串是以空格开头的! #else 不符合条件 #end
几个关键点:
- 先判断
$targetStr != null:防止字符串为null时调用方法抛出异常 - 再判断
$targetStr != '':排除空字符串的干扰 - 最后用
startsWith(' ')精准匹配以空格开头的字符串
2. 批量筛选集合中的目标字符串
如果你的需求是从一个字符串集合(比如List
#-- 初始化一个空集合用来存储筛选结果 --# #set($spaceStartStrings = []) #-- 遍历原字符串集合 --# #foreach($str in $originalStringList) #if($str != null && $str != '' && $str.startsWith(' ')) #-- 将符合条件的字符串添加到结果集合 --# #set($void = $spaceStartStrings.add($str)) #end #foreach #-- 输出最终筛选结果 --# 符合条件的字符串:$spaceStartStrings
3. 扩展:匹配任意空白字符开头
如果你需要检测的是任意空白字符(比如制表符、换行符、空格),可以用正则表达式的matches方法,注意Velocity里正则的反斜杠要写两个(做转义处理):
#if($str != null && $str != '' && $str.matches('^\\s.*')) 该字符串是以空白字符开头的! #end
这里^\\s.*的含义是:字符串开头是任意空白字符(\\s),后面可以跟任意内容(.*)。
内容的提问来源于stack exchange,提问作者SteffPoint
相关产品推荐
相关产品推荐

