# TemplateUtils **Repository Path**: not_flower/template-utils ## Basic Information - **Project Name**: TemplateUtils - **Description**: 超轻量的模板字符串工具,依靠spring的el表达式引擎,满足大部分模板字符串处理需求。除了spring和fastjson无其他依赖。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-15 - **Last Updated**: 2025-02-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TemplateUtils #### 介绍 一个java模板工具 利用springboot自带的spEL表达式功能,处理模板字符串。300来行代码,超轻量,除了spring,fastjson,无其他依赖,满足大部分模板处理需求。 #### 使用说明 **变量** ``` String tm = "Hello {{name}}"; Map data = new HashMap<>(); data.put("name","张山"); tm = TemplateUtils.format(tm,data); System.out.println(tm); ``` 输出: ``` Hello 张山 ``` **条件语句** ``` tm = "{{name}} {{age>18?'成年':'未成年{{age}}岁'}}"; data.put("age",13); tm = TemplateUtils.format(tm,data); System.out.println(tm); ``` 输出: ``` 张山 未成年13岁 ``` **迭代语句**,spel表达式不支持循环迭代,这里使用自定义迭代函数处理。iter函数名称,friends数据,v则是集合元素 ``` tm = "{{name}}的朋友们 {{iter(friends,v,'姓名:{{v.name}},年龄:{{v.age}};')}}"; List> list = new ArrayList<>(); data.put("friends",list); list.add(new HashMap(){{ put("name","李四"); put("age","12"); }}); list.add(new HashMap(){{ put("name","王五"); put("age","19"); Map deep = new HashMap<>(); deep.put("careerName","平面设计"); put("career",deep); }}); list.add(new HashMap(){{ put("name","赵六"); put("age","9"); }}); tm = TemplateUtils.format(tm,data); System.out.println(tm); ``` 输出: ``` 张山的朋友们 姓名:李四,年龄:12;姓名:王五,年龄:19;姓名:赵六,年龄:; ``` **深度导航** ``` tm = "{{name}}的朋友们 {{iter(friends,v,'姓名:{{v.name}},职业:{{v.career.careerName}};')}}"; tm = TemplateUtils.format(tm,data); System.out.println(tm); ``` 输出: ``` 张山的朋友们 姓名:李四,职业:;姓名:王五,职业:平面设计;姓名:赵六,职业:; ``` **添加分割符**循环拼接时,采用' && '分割。 ``` tm = "{{name}}的朋友们 {{iter(friends,v,' && ','姓名:{{v.name}},年龄:{{v.age}}')}}"; tm = TemplateUtils.format(tm,data); System.out.println(tm); ``` 输出: ``` 张山的朋友们 姓名:李四,年龄:12 && 姓名:王五,年龄:19 && 姓名:赵六,年龄: ``` spEL对单双引号使用限制 **'单引号里面只能使用"双引号"',"双引号里面只能使用'单引号'"** **如果确实需要混用,可以先用其他字符代替,之后再替换回来** **访问下标** ``` tm = "{{name}}的朋友们 {{iter(friends,i,v,'。','{{i+1}}.姓名:\"{{v.name}}\",年龄:{{v.age}}')}}"; tm = TemplateUtils.format(tm,data); System.out.println(tm); ``` 输出: ``` 张山的朋友们 1.姓名:"李四",年龄:12。2.姓名:"王五",年龄:19。3.姓名:"赵六",年龄: ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)