一、substring
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 |
二、cap_first:將字串的第一個字元或者字母(僅前幾個字元是空格的情況)大寫(如果第一個字元是字母);如果字串的第一個字元不是字母(空格除外),將按照原來字串的格式返回;若第一個字元是字母並且是大寫的情況,結果同上。
運算式 |
結果 |
${‘ green mouse’?cap_first} |
Green mouse |
${‘GreEN mouse’?cap_first} |
GreEN mouse |
${‘- green mouse’? cap_first} |
- green mouse |
In the case of "-green mouse", thefirst word is the -.
三、uncap_first:功能和cap_first相反
四、capitalize:將一個字串的首字母大寫,其他字母全小寫
運算式 |
結果 |
${ green mouse}?capitalize |
Green Mouse |
${‘GreEN mouse’?capitalize} |
Green Mouse |
五、chop_linebreak:如果一個字串的末尾有換行,將換行打斷;否則不變
六、date,time,datetime:將字串轉換成日期,建議提供一個參數指定格式
運算式 |
結果 |
<#assign test1 = ‘10/25/1995’?date(‘MM/ddyyyy’)>${test1} |
Oct 25,1955 |
|
|
七、ends_with:判斷字串是否以指定的字元結尾,如果是返回true;否則返回false
運算式 |
結果 |
${‘read head’?ends_width(‘head’)} |
true |
八、html:作為HTML標記的字串。也就是說,所有的字串
l <取代<
l >替換>
l &替換為&
l "改為"
如果在某個字串中存在一些HTML特色字元的話,可以使用這種方式來避免與HTML的衝突
九、groups
十、index_of:返回指定字元在字串中第一次出現的索引。也可以指定從那個索引開始進行尋找如${‘abcabc’?index_of(‘bc’,2)}將指定從索引為2的地方開始進行尋找匹配字元.如果沒有找到批評的字元將返回-1
運算式 |
結果 |
${‘abcabc’?index_of(‘bc’)} |
1 |
${‘abcabc’?index_of(‘bc’,2)} |
4 |
十一、 j_string:java中的逸出字元
十二、 js_string: 脫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 |
十九、 matches:只能在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>進行迭代
二十、 number:將String轉換為數值,這個數字必須在FTL指定的格式
二十一、 replace:它用來取代原來的字串與另一個字串中所有出現的字串。它不涉及字邊界
運算式 |
結果 |
${‘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| |
二十二、 rtf:作為富文本(RTF)字串
l \替換\\
l {替換\{
l }替換\}
二十三、 split:”分割
分割方式可以指定為標點符號或者字元
運算式 |
結果 |
<#list ‘yangyang,do you know my heart’?split(‘,’) as m> - ${m} </#list> |
-yangyang -do you know my heart |
二十四、 starts_with:以什麼開始,與ends_with向對應
二十五、 string:什麼也不做,只是返回的字串原樣。唯一的例外is,如果該值是一個多類型的值(例如,它是兩個字串,在同一個時間順序),然後將得到的值只是一個簡單的字串,而不是一個多類型的值。
二十六、 trim:去掉前後空格
二十七、 upper_case:將所有的字母轉換為大寫,與lower_case向對應
二十八、 word_list:返回的是一個序列,其中包含的是命令字串中的所有字,因為他們出現在字串中,語言是通過以“空格”為標準進行分割
運算式 |
結果 |
<#assign words = " a bcd, . 1-2-3"?word_list> <#list words as word>[${word}]</#list> |
[a] [bcd,][.] [1-2-3] |
二十九、 xhtml:作為XHTML的文本字串,類似於html
l <取代<
l >取代>
l &取代&
l “取代”
l ‘取代’
三十、 xml:作為XML文本字串
l <取代<
l >替換>
l &替換為&
l “改為”
l ‘改為’