`

Freemarker操作字符串

阅读更多

一.工程结构



二.代码

1.TemplateStringDemo.java

package com.bijian.study;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class TemplateStringDemo {

	public static void main(String[] args) throws Exception {
		
		//---------------------FreeMarker配置 ---------------------------
        FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
        
        //file:D:\SoftWare\workspace\FreeMarkerDemo
        String templateLoaderPath = "file:" + new File("").getAbsolutePath();
        freeMarkerConfigurer.setTemplateLoaderPath(templateLoaderPath);

        Properties settings = new Properties();
        settings.setProperty("template_update_delay", "0");
        settings.setProperty("default_encoding", "UTF-8");
        settings.setProperty("locale", "zh_CN");
        settings.setProperty("classic_compatible", "true");
        freeMarkerConfigurer.setFreemarkerSettings(settings);

        Configuration configuration = freeMarkerConfigurer.createConfiguration();
        Template template = configuration.getTemplate("freeMarkerStringDemo.ftl");
        //---------------------FreeMarker配置---------------------------

        //==========================范例 start==================================
        Map<String, Object> parameters = new HashMap<String, Object>();

        /*
         *  1.substring(start,end)从一个字符串中截取子串
		 *  start:截取子串开始的索引,start必须大于等于0,小于等于end
		 *  end: 截取子串的长度,end必须大于等于0,小于等于字符串长度,如果省略该参数,默认为字符串长度。
         */
        parameters.put("str", "str");

        /*
         * 2.cap_first 将字符串中的第一个单词的首字母变为大写
         */
        parameters.put("capfirst", "capfirst");
        
        /*
         * 3.uncap_first将字符串中的第一个单词的首字母变为小写
         */
        parameters.put("Uncapfirst", "Uncapfirst");
        
        /*
         * 4.capitalize将字符串中的所有单词的首字母变为大写
         */
        parameters.put("capitalize", "welcome to shengzhen");
        //==========================范例 end==================================

        //-----------------------根据模板和参数生成字符串----------------------------
        String ftl = FreeMarkerTemplateUtils.processTemplateIntoString(template, parameters);

        System.out.println(ftl);
	}
}

2.freeMarkerStringDemo.ftl

<#-- ==================FreeMarker模板生成的内容  START===================== -->

范例一:substring(start,end)从一个字符串中截取子串
	${r"${'"}${str}${r"'?substring(0)}"}的结果为:${str?substring(0)}
	${r"${'"}${str}${r"'?substring(1)}"}的结果为:${str?substring(1)}
	${r"${'"}${str}${r"'?substring(2)}"}的结果为:${str?substring(2)}
	${r"${'"}${str}${r"'?substring(3)}"}的结果为:${str?substring(3)}
	${r"${'"}${str}${r"'?substring(0,0)}"}的结果为:${str?substring(0,0)}
	${r"${'"}${str}${r"'?substring(0,1)}"}的结果为:${str?substring(0,1)}
	${r"${'"}${str}${r"'?substring(0,2)}"}的结果为:${str?substring(0,2)}
	${r"${'"}${str}${r"'?substring(0,3)}"}的结果为:${str?substring(0,3)}

范例二:cap_first将字符串中的第一个单词的首字母变为大写
	${r"${'"}${capfirst}${r"'?cap_first}"}的结果为:${capfirst?cap_first}

范例三:uncap_first将字符串中的第一个单词的首字母变为小写
	${r"${'"}${Uncapfirst}${r"'?cap_first}"}的结果为:${Uncapfirst?cap_first}

范例四:capitalize将字符串中的所有单词的首字母变为大写
	${r"${'"}${capitalize}${r"'?capitalize}"}的结果为:${capitalize?capitalize}

范例五:date,time,datetime将字符串转换为日期,注意:如果指定的字符串格式不正确将引发错误
	<#assign date1="2009-10-12"?date("yyyy-MM-dd")>
	${date1}
	<#assign date2="9:28:20"?time("HH:mm:ss")>
	${date2}
	<#assign date3="2009-10-12 9:28:20"?datetime("yyyy-MM-dd HH:mm:ss")>
	${date3}

范例六:ends_with 判断某个字符串是否由某个子串结尾,返回布尔值,注意:布尔值必须转换为字符串才能输出
	${r'${"string"?ends_with("ing")?string}'}的结果为:${"string"?ends_with("ing")?string}
	${r"${'string'?ends_with('ing')?string}"}的结果为:${'string'?ends_with('ing')?string}
	
范例七:html用于将字符串中的<、>、&和"替换为对应得&lt;&gt;&quot:&amp
	${r"${'a>b b<c c&d "}${'"'}${r"是双引号'?html}"}的结果为:${'a>b b<c c&d "是双引号'?html}

范例八:index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1
Start参数用于指定从字符串的那个索引处开始搜索,start为数字值。
如果start大于字符串长度,则start取值等于字符串长度,如果start小于0, 则start取值为0。
	${r'${"string"?index_of("in")}'}的结果为:${"string"?index_of("in")}
	${r'${"string"?index_of("ab")}'}的结果为:${"string"?index_of("ab")}

范例九:length返回字符串的长度
	${r'${"string"?length}'}的结果为:${"string"?length}

范例十:lower_case将字符串转为小写
	${r'${"STRING"?lower_case}'}的结果为:${"STRING"?lower_case}

范例十一:upper_case将字符串转为大写
	${r'${"string"?upper_case}'}的结果为:${"string"?upper_case}

范例十二:contains判断字符中是否包含某个子串,返回布尔值。注意:布尔值必须转换为字符串才能输出
	${r'${"string"?contains("ing")?string}'}的结果为:${"string"?contains("ing")?string}

范例十三:number将字符串转换为数字
	${r'${"111.11"?number}'}的结果为:${"111.11"?number}

范例十四:replace用于将字符串中的一部分从左到右替换为另外的字符串。
	${r'${"strabg"?replace("ab","in")}'}的结果为:${"strabg"?replace("ab","in")}

范例十五:split使用指定的分隔符将一个字符串拆分为一组字符串
	<#list "This|is|split"?split("|") as s>
		${s}
	</#list>

范例十六:trim删除字符串首尾空格 
	${r'${" String "?trim}'}的结果为:${" String "?trim}

<#-- ==================FreeMarker模板生成的内容  END===================== -->

 

三.运行结果

范例一:substring(start,end)从一个字符串中截取子串
	${'str'?substring(0)}的结果为:str
	${'str'?substring(1)}的结果为:tr
	${'str'?substring(2)}的结果为:r
	${'str'?substring(3)}的结果为:
	${'str'?substring(0,0)}的结果为:
	${'str'?substring(0,1)}的结果为:s
	${'str'?substring(0,2)}的结果为:st
	${'str'?substring(0,3)}的结果为:str

范例二:cap_first将字符串中的第一个单词的首字母变为大写
	${'capfirst'?cap_first}的结果为:Capfirst

范例三:uncap_first将字符串中的第一个单词的首字母变为小写
	${'Uncapfirst'?cap_first}的结果为:Uncapfirst

范例四:capitalize将字符串中的所有单词的首字母变为大写
	${'welcome to shengzhen'?capitalize}的结果为:Welcome To Shengzhen

范例五:date,time,datetime将字符串转换为日期,注意:如果指定的字符串格式不正确将引发错误
	2009-10-12
	9:28:20
	2009-10-12 9:28:20

范例六:ends_with 判断某个字符串是否由某个子串结尾,返回布尔值,注意:布尔值必须转换为字符串才能输出
	${"string"?ends_with("ing")?string}的结果为:true
	${'string'?ends_with('ing')?string}的结果为:true
	
范例七:html用于将字符串中的<、>、&和"替换为对应得&lt;&gt;&quot:&amp
	${'a>b b<c c&d "是双引号'?html}的结果为:a&gt;b b&lt;c c&amp;d &quot;是双引号

范例八:index_of(substring,start)在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1
Start参数用于指定从字符串的那个索引处开始搜索,start为数字值。
如果start大于字符串长度,则start取值等于字符串长度,如果start小于0, 则start取值为0。
	${"string"?index_of("in")}的结果为:3
	${"string"?index_of("ab")}的结果为:-1

范例九:length返回字符串的长度
	${"string"?length}的结果为:6

范例十:lower_case将字符串转为小写
	${"STRING"?lower_case}的结果为:string

范例十一:upper_case将字符串转为大写
	${"string"?upper_case}的结果为:STRING

范例十二:contains判断字符中是否包含某个子串,返回布尔值。注意:布尔值必须转换为字符串才能输出
	${"string"?contains("ing")?string}的结果为:true

范例十三:number将字符串转换为数字
	${"111.11"?number}的结果为:111.11

范例十四:replace用于将字符串中的一部分从左到右替换为另外的字符串。
	${"strabg"?replace("ab","in")}的结果为:string

范例十五:split使用指定的分隔符将一个字符串拆分为一组字符串
		This
		is
		split

范例十六:trim删除字符串首尾空格 
	${" String "?trim}的结果为:String

 

学习文章地址:http://www.blogjava.net/alinglau36/archive/2011/02/23/344970.html

  • 大小: 21.1 KB
分享到:
评论

相关推荐

    Freemarker_内置函数_数字、字符串、日期格式化.txt

    根据提供的文件信息,我们可以深入探讨Freemarker中的内置函数,主要关注数字、字符串以及日期的格式化处理。Freemarker是一种强大的模板引擎,被广泛应用于Web开发和其他领域中,用于生成动态HTML页面或其他类型的...

    freemarker_常用内置函数

    Freemarker 提供了一些操作字符串的内置函数,用于操作字符串对象。 1. `substring(start,end)`:从一个字符串中截取子串。 2. `cap_first`:将字符串中的第一个单词的首字母变为大写。 3. `uncap_first`:将字符串...

    freeMark语法

    FreeMarker提供了文本处理功能,如字符串拼接、格式化输出: - `${'Hello, ' + user.name}`:拼接字符串。 - `${value?string('yyyy-MM-dd')}`:格式化日期。 ### 7. 自定义指令和宏 FreeMarker允许你创建自定义...

    freemarker操作手册-完整freemarker教程

    - 字符串连接:使用`~`符号连接字符串。 - 数学运算:支持加减乘除、取余、指数等运算。 - 逻辑运算:`&&`(与)、`||`(或)、`!`(非)。 - 集合操作:遍历列表、索引访问、过滤等。 6. **模板设计模式** - ...

    FreeMarker内置函数

    在FreeMarker中,内置函数提供了一套便捷的工具,帮助我们在模板中执行各种操作,例如字符串处理、日期时间格式化等。 1. **字符串操作函数** - `join`: 将数组或列表中的元素连接成一个字符串,通常用于生成CSV...

    freemarker语法完整版

    - **字符串**: 由单引号或双引号括起来的文本。 - **数字**: 直接使用数值。 - **日期**: 通常从数据模型中获取。 - **布尔值**: `true` 或 `false`,常用于 `&lt;#if...&gt;` 结构中。 **2. Hashes(哈希表)** - ...

    Freemarker语法规则教程

    除了基本的字符串输出,Freemarker还支持更复杂的字符串操作,如字符串拼接。 - **字符串拼接示例**: - 拼接字符串:`${"hello," + username + "!"}`。 - 使用变量拼接字符串:`${"hello,${username}"}`。 这些...

    Freemarker学习总结.pdf

    以下是对Freemarker中Sequence、Hash以及字符串操作函数的详细说明。 一、Sequence的内置函数: 1. `sequence?first`:返回Sequence的第一个元素,如果Sequence为空,返回null。 2. `sequence?last`:返回Sequence...

    JSP中截取在线编辑器的字符串的处理.

    这篇博客“JSP中截取在线编辑器的字符串的处理”就讨论了如何在JSP中对在线编辑器生成的内容进行字符串截取。 在线编辑器生成的HTML代码通常包含各种标签和样式,如果直接进行简单的字符串截取,可能会导致截取结果...

    springmvc采用freemarker动态生成带图片的word

    5. SpringMVC控制器接收到请求后,将数据模型(包括Base64字符串)传递给Freemarker模板。 6. Freemarker根据模板和数据模型生成最终的Word文档。 7. 将生成的Word文档返回给客户端下载或在线预览。 这个项目的实现...

    freemarker-2.3.23jar

    4. **函数和方法**:Freemarker支持自定义函数和方法,可以使用内置的函数库,如字符串操作、数学计算等,也可以扩展自定义函数来满足特定需求。 5. **模板继承和导入**:通过`&lt;#import&gt;`和`&lt;#extends&gt;`,模板可以...

    freemarker使用例子.txt

    Freemarker提供了丰富的内置函数,可以帮助开发者在模板中进行各种操作,如字符串处理、数值运算等。 ##### 字符串操作 ```plaintext 假设 user 的值为 "john.doe" --&gt; ${user?upper_case} // JOHN.DOE ${user?...

    freemarker内置函数和数字格式化.doc

    ### 三、操作字符串函数 1. `substring(start, end)`:从字符串中截取子串,`start` 是起始索引,`end` 是结束索引。 2. `cap_first`:将字符串的第一个字符转为大写。 3. `uncap_first`:将字符串的第一个字符转为...

    FreeMarker手册-Freemarker 2.3.18

    replace`进行字符串替换,`?upper_case`和`?lower_case`进行大小写转换。此外,还有算术操作符(+、-、*、/、%)、比较操作符(==、!=、&lt;、&gt;、、&gt;=)和逻辑操作符(&&、||、!)。 6. **模板配置** 通过`freemarker...

    FreeMarker语法参考

    1. **substring**: 自2.3.7版本起,FreeMarker支持类似Java中的`substring`方法,用于提取字符串的一部分。例如,`"${"abcd"?substring(1,3)}"`的结果为`bc`。该方法在不同平台上表现一致,不会受到编码或编辑器的...

    Java用正则表达式实现${name}形式的字符串模板实例

    在Java编程中,字符串模板是一种常见的技术,它允许我们在字符串中使用特定的占位符(如`${name}`),...在学习和实践中,理解正则表达式在字符串操作中的应用是非常重要的,因为它在许多编程任务中都扮演着关键角色。

    FreeMarker中文文档.pdf下载

    字符串处理是FreeMarker中的一个重要方面,可以进行字符串的拼接、截取、替换等操作。例如: ```ftl ${str?upper_case} &lt;!-- 输出 "HELLO WORLD" --&gt; ${str?replace("o", "0")} &lt;!-- 输出 "Hell0 W0rld" --&gt; ``` ...

Global site tag (gtag.js) - Google Analytics