在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java/ Freemarker存在駝峰轉(zhuǎn)下劃線的表達(dá)式嗎?

Freemarker存在駝峰轉(zhuǎn)下劃線的表達(dá)式嗎?

舉個(gè)例子,以下這樣的freemarker表達(dá)式,傳給它{"model":"Deolin"},最終會(huì)打印出hey! deolin

hey! ${model?uncap_first}

有什么表達(dá)式能讓駝峰轉(zhuǎn)下劃線嗎?不勝感激

回答
編輯回答
不二心

下劃線 轉(zhuǎn) 駝峰

<#function dashedToCamel(s)>
    <#return s
    ?replace('(^_+)|(_+$)', '', 'r')
    ?replace('\\_+(\\w)?', ' $1', 'r')
    ?replace('([A-Z])', ' $1', 'r')
    ?capitalize
    ?replace(' ' , '')
    ?uncap_first
    >
</#function>
${dashedToCamel("___caMel___to_under_scOre_teSt____")}
輸出:caMelToUnderScOreTeSt
2017年1月7日 20:10
編輯回答
嘟尛嘴

簡(jiǎn)單的方案

${"CamelToUnderScoreTest"?replace("([a-z])([A-Z]+)","$1_$2","r")?lower_case}

會(huì)輸出 :camel_to_under_score_test

復(fù)雜一點(diǎn)的

<#function camelToDashed(s)>
  <#return s
      <#-- "fooBar" to "foo_bar": -->
      ?replace('([a-z])([A-Z])', '$1_$2', 'r')
      <#-- "FOOBar" to "FOO_Bar": -->
      ?replace('([A-Z])([A-Z][a-z])', '$1_$2', 'r')
      <#-- All of those to "FOO_BAR": -->
      ?upper_case
  >
</#function>
2018年6月30日 07:38