package org.whvcse.template;
/**
*
*/
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.Map;
/**
* 字符串解析模板类:能解析符合规范的模板字符串.
* @author 武汉软件工程职业学院 计算机应用工程系0701 孟德军
*
* @param <T> 预定义的值类型
*/
public class StringTemplate<T>
{
private String leftDeLimiter = "${";
private String rightDeLimiter = "}";
private static final long serialVersionUID = 1L;
public String parse(String content, Map<String, T> map)
throws Exception {
if (content == null || content.equals("") || map == null
|| map.size() == 0) {
throw new Exception(
"parse content or map<String,T> can't null");
}
String rv = null;
String temp = content;
Iterator<Map.Entry<String, T>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, T> entry = it.next();
String key = this.getLeftDeLimiter() + entry.getKey()
+ this.getRightDeLimiter();
T value = entry.getValue();
int index = temp.indexOf(key);
while (index != -1) {
String leftvalue = temp.substring(0, index);
String rightvalue = temp.substring(index + key.length());
temp = leftvalue + value + rightvalue;
index = temp.indexOf(key);
}
}
return temp;
}
public String parse(String content, Map map, String charset1,
String charset2) throws ParseException {
String s = null;
String temp = parse(content, map);
try {
s = new String(temp.getBytes(charset1), charset2);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return s;
}
public String getLeftDeLimiter() {
return leftDeLimiter;
}
public void setLeftDeLimiter(String leftDeLimiter) {
this.leftDeLimiter = leftDeLimiter;
}
public String getRightDeLimiter() {
return rightDeLimiter;
}
public void setRightDeLimiter(String rightDeLimiter) {
this.rightDeLimiter = rightDeLimiter;
}
}
StringTemplate<String> template=new StringTemplate<String>();
Map<String,String> map=new HashMap<String,String>();
map.put("username","mike");
map.put("password","123456");
String s=template.parse("insert into user(username,password) values(${username},${password})",map);
system.out.println(s);
insert into user(username,password) values(mike,123456)
分享到:
相关推荐
ACM 之字符串模板 ACM 竞赛中常用的字符串类型数据结构模板是指一组预先设计好的函数和算法,用于解决字符串相关的问题。这些模板涵盖了字符串匹配、字符串搜索、子串出现次数统计等多种操作。 在 ACM 竞赛中,...
字符串模板
特定长度的定长字符串模板类.如果C++标准支持模板typedef的话,下面的4的俩类就不用再写了,遗憾的是还不支持,所以他也是抽象类.//其实做成可实例化的类也没任何问题。 3. typedef basic_small_string_base<;...
在Java编程中,字符串模板是一种常见的技术,它允许我们在字符串中使用特定的占位符(如`${name}`),然后根据需要替换这些占位符为实际的值。这在处理动态内容,如邮件模板、日志输出或用户消息时非常有用。正则...
本文将重点讨论字符串模板、剩余参数和默认参数的功能与用法。 首先,我们来看字符串模板(也称为模板字面量)。在ES6之前,JavaScript中的字符串拼接通常使用加号 (+) 或者字符串连接函数如`concat()`,但这种方式...
(即非字符串模板) 非字符串模板:在单文件里用 <template></template> 指定的模板,换句话说,写在 html 中的就是非字符串模板。 字符串模板:在js字符串中定义的模板。 2、Props属性:HTML 特性是不区分大小写的...
一、数组 二、字符串 三、字符串模板
“tstemplate一个基于模板字符串的模板引擎的最简实现只适用于node环境” 这个标题揭示了我们讨论的核心是名为“tstemplate”的模板引擎,它利用了JavaScript的模板字符串功能,并且是针对Node.js运行环境设计的。...
【JavaScript 字符串模板的简单实现】 在前端开发中,特别是在前后端分离的架构中,经常需要将后端返回的 JSON 数据动态地渲染到页面上。最初,开发者可能使用字符串拼接的方式来处理这种情况,但随着页面复杂度的...
Kotlin 1.3 基础课程第二章 基础语法字符串模板及注释详解
字符串模板 基本的字符串模板器 用法 var templater = require ( 'string-templater' ) ; templater ( 'I like {food}' , { food : 'Bacon' } ) ; // I like Bacon templater ( 'First do {0} then {1}' , [ '...
StringTemplate StringTemplate是一个非常简单的php字符串模板引擎。 我已经编写了类似sprintf的东西,但是有命名和嵌套替换。 有关安装说明,请转到本自述文件的末尾。为什么我经常要与sprintf缺少命名占位符功能作...
在web开发中,字符串插值是最常用的字符串操作之一。 虽然许多编程语言都提供内置的字符串插值支持,但在这个挑战中,您需要自己实现它。不允许在您选择的编程语言中使用内置的字符串插值机制。 在这个挑战中,...
本文实例讲述了Python编程之字符串模板(Template)用法。分享给大家供大家参考,具体如下: #coding=utf8 ''''' 字符串格式化操作符,需要程序员明确转换类型参数, 比如到底是转成字符串、整数还是其他什么类型。 ...
7. **字符串格式化**:`FormatString`函数类似于C语言的`printf`,可以将变量插入到预定义的字符串模板中,方便输出格式化的信息。 8. **字符串转换**:如`ToUpperCase`和`ToLowerCase`用于将字符串转换为大写或...
模板字符串,又称模板字面量,是ES6引入的一种新型字符串表示方式,它允许我们在字符串中嵌入表达式并使用反引号(`)包裹。在Vue.js中,我们可以利用这种特性来增强模板的灵活性和可读性。 1. **模板字符串基础** ...
上述只是一些基本操作,实际开发中还会涉及更多高级特性,如模式匹配、字符串模板、字符串缓存等。在“字符串操作大全”这个资源中,应该包含了这些知识点的详细讲解和示例代码,帮助开发者深入理解和熟练运用字符串...
Lua字符串模板 概述 Lust是一个基于Terrence Parr的Lua模板系统。 Lust旨在使复杂字符串合成问题的简单表达成为可能。 它特别适合从分层数据结构生成字符串。 Lust本身包含用于编写模板的语言和用于将模板应用于数据...