Discuss / Java / 练习

练习

Topic source

狠美味2013

#1 Created at ... [Delete] [Delete and Lock User]

package com.itranswarp.world;

import java.util.Map;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

 * 编写一个简单的模板引擎,利用正则表达式实现这个功能。

 * 

 * @author Administrator

 * 

 */

public class Template {

final String template;

final Pattern pattern = Pattern.compile("\\$\\{(\\w+)\\}");

public Template(String template) {

this.template = template;

}

public String render(Map<String, String> data) {

Matcher m = pattern.matcher(template);

StringBuffer sb = new StringBuffer();

while (m.find()) {

for (String key : data.keySet()) {

if (("${" + key + "}").equals(template.substring(m.start(),

m.end()))) {

m.appendReplacement(sb, data.get(key));

break;

}

}

}

m.appendTail(sb);

return sb.toString();

}

}

package com.itranswarp.world;

import java.util.HashMap;

import java.util.Map;

import org.junit.Test;

import static org.junit.Assert.*;

public class TemplateTest {

@Test

public void testIsValidTel() {

Template t = new Template("Hello, ${name}! You are learning ${lang}!");

Map<String, String> data = new HashMap<String, String>();

data.put("name", "Bob");

data.put("lang", "Java");

assertEquals("Hello, Bob! You are learning Java!", t.render(data));

}

}


  • 1

Reply