FreeMarker字符串操作

1.插值(字符串连接)

 
 

如果要在字符串中插入表达式的值,可以在字符串的文字中使用${…} (#{…} ) 。

${…}的作用和在文本区的是相同的。假设用户是” Big Joe”,看下面的代码:

${“Hello ${user}!”}

${“${user}${user}${user}${user}”}

 
 

将会打印如下内容:

Hello Big Joe!

Big JoeBig JoeBig JoeBig Joe

另外,也可以使用+号来达到类似的效果,这是比较老的方法,也叫做字符串连接。示

例如下:

${“Hello ” + user + “!”}

${user + user + user + user}

 
 

这样打印的效果和多次使用${…}是一样的。

警告:

使用者在使用插值时经常犯的一个错误是:在不能使用插值的地方使用了它。插值只能

${“Hello ${user}!”}

${“${user}${user}${user}${user}”}

Hello Big Joe!

Big JoeBig JoeBig JoeBig Joe

${“Hello ” + user + “!”}

${user + user + user + user}





if 指令的参数需要的是布尔值,而这里是字符串,那么就会引起运行时的错误。

 
 

2.获取一个字符

在给定索引值时可以获取字符串中的一个字符,这和 3.3.4.3 节中从序列检索数据是相

似的,比如 user[0]。这个操作执行的结果是一个长度为 1 的字符串,FTL 并没有独立的

字符类型。和序列中的子变量一样,这个索引也必须是数字,范围是从 0 到字符串的长度,

否则模板的执行将会发生错误并终止。

由于序列的子变量语法和字符的 getter 语法冲突,那么只能在变量不是序列时使用字符

的 getter 语法(因为 FTL 支持多类型值,所以它是可能的) ,这种情况下使用序列方式就比

较多。(为了变通,可以使用内建函数 string,比如 user?string[0]。不必担心你

不理解这个含义,内建函数将会在后续章节中讨论。)

看一个例子(假设 user 是”Big Joe”)

${user[0]}

${user[4]}

将会打印出(注意第一个字符的索引是 0):

B

J

注意:

可以按照切分序列 的方式来获取一定范围内的字符,比如${user[1..4]} 和

${user[4..]}。然而现在这种使用方法已经被废弃了,作为它的替代,可以使用内建

函数 substring。

 
 

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《FreeMarker字符串操作
本文地址:https://www.zhiletu.com/archives-4687.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微