`

字符串替换

    博客分类:
  • java
 
阅读更多

  高效的字符串模式替换实现效果如下 

String str = "姓名:${name}\n性别:${sex}\n住址:${address}\n联系方式:${linkinf}";
Map<String, String> map1 = new HashMap<String, String>();
map1.put("xxx", "\\哈哈");
map1.put("name", "\"Steven\"");
map1.put("address", "${XX市XX区XXX二路X-X号X室}");
map1.put("linkinf", "\\13577777777\\");

System.out.println(Template.convert(str, map1)); 

姓名:"Steven"
性别:null
住址:${XX市XX区XXX二路X-X号X室}
联系方式:\13577777777\

public abstract class Template {
	private static final String START_FLAG = "${";
	private static final String END_FLAG = "}";
	/**
	 * 将字符串中特定模式的字符转换成map中对应的值
	 *
	 * @param s
	 *            需要转换的字符串
	 * @param map
	 *            转换所需的键值对集合
	 * @return 转换后的字符串
	 */
	public static String convert(String s, Map<String, String> map) {
		StringBuilder ret = new StringBuilder(s.length());
		int cursor = 0;
		for (int start, end; (start = s.indexOf(START_FLAG, cursor)) != -1
				&& (end = s.indexOf(END_FLAG, start)) != -1;) {
			ret.append(s.substring(cursor, start)).append(
					map.get(s.substring(start + START_FLAG.length(), end)));
			cursor = end + END_FLAG.length();
		}
		ret.append(s.substring(cursor, s.length()));
		return ret.toString();
	}
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics