如何使用XSLT从邮箱地址中提取名字首字母加完整姓氏字符串
XSLT 从邮箱提取名字首字母+完整姓氏实现方案
核心实现代码
你可以直接使用以下表达式替换原有代码,无需提前截取长度,内置函数会自动适配不同长度的邮箱字符:
<xsl:value-of select="concat( substring(substring-before(substring-before(ws:Additional_Information/ws:User_Name_Of_Employee/text(), '@'), '.'), 1, 1), substring-after(substring-before(ws:Additional_Information/ws:User_Name_Of_Employee/text(), '@'), '.') )" />
逻辑拆解
- 先通过
substring-before(邮箱地址, '@')提取邮箱@符号前的用户名部分,示例输入会得到eman.ahmed - 取用户名第一段(点分隔前的名字部分)的第一个字符:
substring(substring-before(用户名, '.'), 1, 1),示例中得到e - 取用户名第二段(点分隔后的姓氏部分):
substring-after(用户名, '.'),示例中得到ahmed - 最后通过
concat()函数拼接两部分,得到最终结果eahmed
多段用户名适配
如果你的邮箱用户名存在多个点分隔的情况(如eman.ali.ahmed@domain.com),需要取最后一段作为姓氏,XSLT 2.0及以上版本可以使用以下写法:
<xsl:value-of select="concat( substring(tokenize(substring-before(ws:Additional_Information/ws:User_Name_Of_Employee/text(), '@'), '\.')[1], 1, 1), tokenize(substring-before(ws:Additional_Information/ws:User_Name_Of_Employee/text(), '@'), '\.')[last()] )" />
内容的提问来源于stack exchange,提问作者Eman Ahmed
相关产品推荐
相关产品推荐

