如何使用Freemarker表达式提取并显示姓名中的名
用FreeMarker提取姓名中的名(Sam)的方法
嘿,要从字符串姓名 = Sam Jones里只显示名Sam,用FreeMarker可以通过字符串处理函数轻松实现,给你两种实用的方案:
方案一:拆分字符串分步处理
假设存储该字符串的变量名为userNameStr,可以这样写表达式:
${userNameStr?split('=')[1]?trim?split(' ')[0]}
咱们拆解下每一步的作用:
?split('='):把原字符串按等号分割成数组,得到["姓名 ", " Sam Jones"][1]:取数组的第二个元素(索引从0开始),也就是带空格的名字部分" Sam Jones"?trim:去掉该字符串前后的空格,得到干净的"Sam Jones"?split(' '):再按空格分割成数组["Sam", "Jones"][0]:取数组的第一个元素,就是咱们要的Sam
方案二:先截取有效内容再拆分
如果觉得分步拆分有点繁琐,也可以先用substringAfter直接获取等号后的内容,再处理:
${userNameStr?substringAfter('=')?trim?split(' ')[0]}
?substringAfter('=')会直接提取等号后面的所有内容,后续的?trim和拆分步骤和方案一一致,最终也能得到Sam。
特殊情况:如果已经拿到全名
要是你已经把Sam Jones单独存成了变量(比如fullName),那表达式就更简单了:
${fullName?split(' ')[0]}
内容的提问来源于stack exchange,提问作者Raghul
相关产品推荐
相关产品推荐

