从 FTL 中的 URL 获取子字符串
Get Sub-string From URL in FTL
我有下面的 URL 字符串说 /level1/level2/level3/_________________
现在我需要获取第 3 级之前的子字符串。即 /level1/level2/level3。我怎样才能实现它?
谢谢,
可能有一个使用 ?substring
和 ?index_of
的解决方案,但另一个解决方案将使用 ?split("/")
。这会将字符串变成您可以操作的序列。
<#assign URL = "level1/level2/level3/level4/file" />
<#assign seqURL = URL?split('/') />
${seqURL[0]+'/'+seqURL[1]+'/'+seqURL[2]}
执行此查找的另一种方法是将序列分块并加入第一个块。
${URL?split('/')?chunk(3)[0]?join("/")}
通过使用 freemarker 内置函数 index_of , substring and with a little help with length
${URL?substring(0, URL?index_of("level1/level2/level3") + 1 + "level1/level2/level3"?length}
假设它总是以/
开头,你可以用正则表达式来做到这一点:
${u?matches(r'^((/[^/]+){0,3})', 'r')[0]}
请注意,如果级别少于 3 个,或者只有 3 个级别但第 3 个级别不以 /
结尾,这也适用。
我有下面的 URL 字符串说 /level1/level2/level3/_________________
现在我需要获取第 3 级之前的子字符串。即 /level1/level2/level3。我怎样才能实现它?
谢谢,
可能有一个使用 ?substring
和 ?index_of
的解决方案,但另一个解决方案将使用 ?split("/")
。这会将字符串变成您可以操作的序列。
<#assign URL = "level1/level2/level3/level4/file" />
<#assign seqURL = URL?split('/') />
${seqURL[0]+'/'+seqURL[1]+'/'+seqURL[2]}
执行此查找的另一种方法是将序列分块并加入第一个块。
${URL?split('/')?chunk(3)[0]?join("/")}
通过使用 freemarker 内置函数 index_of , substring and with a little help with length
${URL?substring(0, URL?index_of("level1/level2/level3") + 1 + "level1/level2/level3"?length}
假设它总是以/
开头,你可以用正则表达式来做到这一点:
${u?matches(r'^((/[^/]+){0,3})', 'r')[0]}
请注意,如果级别少于 3 个,或者只有 3 个级别但第 3 个级别不以 /
结尾,这也适用。