@PheonixHkbxoic
2017-04-24T01:51:18.000000Z
字数 3920
阅读 1074
FreeMarker
目录:
NOTE: 这个内置以来2.3.7 FreeMarker的存在语法exp?substring(from,toExclusive),也可以是exp?substring(from)简介:一个字符串,form是第一个字符(A substring of the string.from is the index of the first character.),它必须是一个数字,而且至少是0和小于0或者具有相 同的 toExclusive.进行截取操作的最后字符的索引,该值必须为数字,如果该 值省略,默认为从from到字符串的结束。例:
| 表达式 | 输出 |
|---|---|
${‘abc’?substring(0)} |
Abc |
${‘abc’?substring(1)} |
Bc |
${‘abc’?substringf(2)} |
C |
${‘abc’?substring(3)} |
|
${‘abc’?substring(0,0)} |
|
${‘abc’?substring(0,1)} |
A |
${‘abc’?substring(0,1)} |
Ab |
将字符串的第一个字符或者字母(仅前几个字符是空格的情况)大写(如果第一个字符是字母);如果字符串的第一个字符不是字母(空格除外),将按照原来字符串的格式返回;若第一个字符是字母并且是大写的情况,结果同上。表达式结果${‘ green mouse’?cap_first}Green mouse${‘GreEN mouse’?cap_first}GreEN mouse${‘- green mouse’? cap_first}- green mouseIn the case of "-green mouse", thefirst word is the -.
功能和cap_first相反
将一个字符串的首字母大写,其他字母全小写表达式结果${ green mouse}?capitalizeGreen Mouse${‘GreEN mouse’?capitalize}Green Mouse
如果一个字符串的末尾有换行,将换行打断;否则不变
将字符串转换成日期,建议提供一个参数指定格式<#assign test1 = ‘10/25/1995’?date(‘MM/ddyyyy’)>${test1}Oct 25,1955
判断字符串是否以指定的字符结尾,如果是返回true;否则返回false${‘read head’?ends_width(‘head’)}true
作为HTML标记的字符串。也就是说,所有的字符串l <取代<l >替换>l &替换为&l "改为"如果在某个字符串中存在一些HTML特色字符的话,可以使用这种方式来避免与HTML的冲突
返回指定字符在字符串中第一次出现的索引。也可以指定从那个索引开始进行查找如${‘abcabc’?index_of(‘bc’,2)}将指定从索引为2的地方开始进行查找匹配字符.如果没有找到批评的字符将返回-1表达式结果${‘abcabc’?index_of(‘bc’)}1${‘abcabc’?index_of(‘bc’,2)}4
Java中的转义字符
脱JavaScript语言文字的字符串字符串的转义规则,因此它是安全的插入文本值转换为字符串。两个引号(“)和单引号- quoate(')被转义。2.3.1起价FreeMarker的,它也逃脱 > 为“\> ( 避免 </脚本>)。此外,在所有字符的UCS 码点0x20,即JavaScript语言中没有专门的转义序列,将被替换为十六进制转义(\ x二十)。(当然,根据JavaScript语言的字符串的语法,反斜杠(\)会被转义也换行会被转义为 \ ?,...等等)如:<#assignuser = "Big Joe's \"right hand\""><script>alert("Welcome${user?js_string}!");</script>将返回<script>alert("Welcome Big Joe\'s \"right hand\"!");</script>```# 十三、 last_index_of:最后一个匹配的索引# 十四、 length:字符串的长度# 十五、 lower_case:全部转换为小写# 十六、 left_pad# 十七、 right_pad# 十八、 contains```这个内置对象在2.3.1版本中有,但2.3版本中没有:用于判段在一个字符串是否存在指定的字符表达式结果<#if ‘maple’?contains(‘ap’)>maple</#if>maple<div class="md-section-divider"></div>
只能在java2平台1.4或更高版本上使用,否则将以错误来处理使用正则进行匹配,返回的是一个序列(SimpleSequence),序列的大小可能是0表达式结果<#if "fxo"?matches("f.?o")>Matches.<#else>Does not match.</#if>Matches.<#assign res = "foo bar fyo"?matches("f.?o")><#if res>Matches.<#else>Does not match.</#if>Matching sub-strings:<#list res as m>- ${m}</#list>Does not match.Matching sub-strings:- foo- fyo返回的序列不能直接通过${}输入,而应该通过<#list>进行迭代<div class="md-section-divider"></div>
将String转换为数值,这个数字必须在FTL指定的格式<div class="md-section-divider"></div>
它用来取代原来的字符串与另一个字符串中所有出现的字符串。它不涉及字边界表达式结果${‘this is a car acarus’?replae(‘car’,’maple’)}this is a maple amapleus${‘aaaa’?replace(‘aaa’,’X’)}Xa${‘maple’?replce(‘’,’|’)}|m|a|p|l|e|<div class="md-section-divider"></div>
作为富文本(RTF)字符串l \替换\\l {替换\{l }替换\}<div class="md-section-divider"></div>
分割方式可以指定为标点符号或者字符表达式结果<#list ‘yangyang,do you know my heart’?split(‘,’) as m>- ${m}</#list>-yangyang-do you know my heart<div class="md-section-divider"></div>
什么也不做,只是返回的字符串原样。唯一的例外is,如果该值是一个多类型的值(例如,它是两个字符串,在同一个时间顺序),然后将得到的值只是一个简单的字符串,而不是一个多类型的值。<div class="md-section-divider"></div>
去掉前后空格<div class="md-section-divider"></div>
将所有的字母转换为大写,与lower_case向对应<div class="md-section-divider"></div>
返回的是一个序列,其中包含的是命令字符串中的所有字,因为他们出现在字符串中,语言是通过以“空格”为标准进行分割表达式结果<#assign words = " a bcd, . 1-2-3"?word_list><#list words as word>[${word}]</#list>[a] [bcd,][.] [1-2-3]<div class="md-section-divider"></div>
l <取代<l >取代>l &取代&l “取代”l ‘取代’<div class="md-section-divider"></div>
l <取代<l >替换>l &替换为&l “改为”l ‘改为’