从 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 个级别不以 / 结尾,这也适用。