Java占位符替换工具类

import java.util.HashMap;  import java.util.Map;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  /** * 配置文件或模板中的占位符替换工具类 * Date: 15-5-8 * Time: 下午4:12 */  public class PlaceholderUtils {  private static final Logger logger = LoggerFactory.getLogger(PlaceholderUtils.class);  /** * Prefix for system property placeholders: "${" */  public static final String PLACEHOLDER_PREFIX = "${";  /** * Suffix for system property placeholders: "}" */  public static final String PLACEHOLDER_SUFFIX = "}";  public static String resolvePlaceholders(String text, Map<String, String> parameter) {  if (parameter == null || parameter.isEmpty()) {  return text;  }  StringBuffer buf = new StringBuffer(text);  int startIndex = buf.indexOf(PLACEHOLDER_PREFIX);  while (startIndex != -1) {  int endIndex = buf.indexOf(PLACEHOLDER_SUFFIX, startIndex + PLACEHOLDER_PREFIX.length());  if (endIndex != -1) {  String placeholder = buf.substring(startIndex + PLACEHOLDER_PREFIX.length(), endIndex);  int nextIndex = endIndex + PLACEHOLDER_SUFFIX.length();  try {  String propVal = parameter.get(placeholder);  if (propVal != null) {  buf.replace(startIndex, endIndex + PLACEHOLDER_SUFFIX.length(), propVal);  nextIndex = startIndex + propVal.length();  } else {  logger.warn("Could not resolve placeholder '" + placeholder + "' in [" + text + "] ");  }  } catch (Exception ex) {  logger.warn("Could not resolve placeholder '" + placeholder + "' in [" + text + "]: " + ex);  }  startIndex = buf.indexOf(PLACEHOLDER_PREFIX, nextIndex);  } else {  startIndex = -1;  }  }  return buf.toString();  }  public static void main(String[] args) {  String aa= "我们都是好孩子,${num}说是嘛? 我觉得${people}是傻蛋!";  Map<String, String> map = new HashMap<String, String>();  map.put("num","小二比");  map.put("people","小明");  System.out.println(PlaceholderUtils.resolvePlaceholders(aa, map));  }  }  

  

转载于:https://www.cnblogs.com/toSeeMyDream/p/6814430.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java switch 输入2_Java switch语句第二种用法

Java switch语句第二种用法package cn.geekeryi;public class SwitchTest02 {public static void main(String[] args) {short month 1;if (month1||month2||month3){System.out.println("这是一季度");}else if (month4||month5||month6){System.out.println("…

java手游 《剑心》_java

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package txt2;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.*;public class MyPanel…

实例讲解webpack的基本使用第二篇

这一篇来讲解一下如何设置webpack的配置文件webpack.config.js 我们新建一个webpack-demo的项目文件夹&#xff0c;然后安装webpack 执行如下命令 在项目文件夹下&#xff0c;建一个dist文件夹来放打包后的文件&#xff0c;以及一个src文件夹来放我们的代码文件 再建立一个inde…

java system.out.read_一个java文件操作小程序 system.out.in buffer read

按键 i buffer readabc123ET 0 97 代码停在此&#xff0c;等待输入 触发代码运行dET 0 …

Redis命令总结及其基础知识讲述

Redis命令总结及其基础知识讲述 1、redis的不同之处 Redis拥有其他数据库不具备的数据结构&#xff0c;又拥有内存存储&#xff08;这使得redis的速度非常快&#xff09;&#xff0c;远程操作&#xff08;使得redis可以与多个客户端和服务器进行连接&#xff09;、持久化&#…

appSettings 配置mysql_app.config数据库配置字符串的三种取法

关于VS2008或VS2005中数据库配置字符串的三种取法VS2008建立Form程序时,如果添加数据源会在配置文件app.config中自动写入连接字符串,这个字符串将会在你利用DataSet,SqlDataAparter,SqlConnection等控件时如影随行地提示你让去选择,或者是新建字符串。如果要用代码的方式取得这…

!!!!Linux系统开发 系列 4 进程资源 环境 fork()子进程 wait() waitpid()僵尸 孤儿进程...

http://990487026.blog.51cto.com/10133282/1834893转载于:https://www.cnblogs.com/zengkefu/p/6832235.html

java 当地时间_【JAVA】获取当地时间

Java代码 importjava.text.SimpleDateFormat;SimpleDateFormat formatter newSimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss ");Date curDate newDate(System.currentTimeMillis());//获取当前时间String str formatter.format(curDate);impo…

js 原型prototype

function MyObject(name, size) {   this.name name;   this.size size; } MyObject.prototype.height "2.26 meters"; MyObject.prototype.tellHeight function() {   return "height of "this.name" is "this.height; } ///使用 …

java 优化线程_Java | 多线程调优(下):如何优化多线程上下文切换?

通过上一讲的讲解&#xff0c;相信你对上下文切换已经有了一定的了解了。如果是单个线程&#xff0c;在 CPU 调用之后&#xff0c;那么它基本上是不会被调度出去的。如果可运行的线程数远大于 CPU 数量&#xff0c;那么操作系统最终会将某个正在运行的线程调度出来&#xff0c;…

js 的正则表达式 部分展示test()方法的验证功能

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><script> var patt1new RegExp("^[1-9][0-9]*$"); document.write(patt1.test("1…

java 工厂模式详解_java 工厂模式的实例详解

java 工厂模式的实例详解工厂方法中的“工厂”和我们平常理解的一样&#xff1a;用于生产产品。而客户是要和产品打交道&#xff0c;所以工厂方法模式的意义在于把客户和产品分开&#xff0c;达到解耦和更灵活的目的。一般我们有一个产品的抽象类&#xff0c;然后有几个具体的产…

用pfx证书java双向认证_把CA证书生成的crt的证书和pem的私钥转换成java能够使用的keystore和pcks12的证书,实现https双向认证...

最近在做一个https双向认证的工作&#xff0c;领导先让我实现&#xff0c;我之前写了一篇文章&#xff0c;把tomcat的生成证书和配置的实现写了出来。现在领导给了我服务器的CA证书的客户端证书和私钥&#xff0c;服务端信任证书&#xff0c;分别是crt和pem格式的文件&#xff…

jmail组件 java_Jmail的主要参数列表

说明&#xff1a;更多的信息请参考Jmail说明&#xff0c;我想这已经足够用的了。(1)Body(信件正文):字符串网络说明&#xff1a;更多的信息请参考Jmail说明&#xff0c;我想这已经足够用的了。(1)Body(信件正文) : 字符串如&#xff1a;JMail.Body "这里可以是用户填写的…

Go -- log4go日志

折腾&#xff1a; 【已解决】go语言中实现log信息同时输出到文件和控制台(命令行&#xff09; 期间&#xff0c;已经通过io的MultiWriter搞定了同时输出信息到文件和console&#xff0c;但是不支持level。 所以&#xff0c;再去试试这个log4go。 github.com/keepeye/log4go 【折…

mysql 查看索引命中_请问下如何在Mysql中where与orderBy后在命中索引?

我现在大概有一个需求&#xff0c;是需要在数据库中查询一个列表。数据表的样子大概是这样的&#xff1a;ABCDE1112016-08-0540...............而我现在的SQL语句大概是这样的SELECT * FROM TABLE WHERE B 1 AND C 1 AND D 2016-08-05 ORDER BY E DESC在这种情况下我应该怎么…

linux自动挂载windows磁盘

自动挂载配置文件&#xff1a; /etc/fstab 1 # /etc/fstab: static file system information.2 #3 # Use blkid to print the universally unique identifier for a4 # device; this may be used with UUID as a more robust way to name devices5 # that works even if disks …

java云开发_Java 快速开始

# Java 快速开始代码示例&#xff1a;点击下方按钮一键部署&#xff1a;# 第 1 步&#xff1a;编写基础应用首先我们创建一个 Spring Boot 应用。使用 curl 和 unzip 命令新建一个空 Web 项目&#xff1a;curl https://start.spring.io/starter.zip \-d dependenciesweb \-d ja…

首个比较成型的切图作品

花了一天的时间&#xff0c;跌跌撞撞完成了自己的第一个切图作品。纪念一下&#xff01; https://github.com/yangpeijia/psd-html.git转载于:https://www.cnblogs.com/jiajiayang/p/6840056.html

java jar包 配置文件_java 导入jar包中配置文件

spring项目只能识别到项目内的xml配置文件&#xff0c;无法识别jar中xml配置文件解决思路&#xff1a;在启动初始化期间&#xff0c;将jar包内部的文件拷贝到jar包外部相对路径中。//jarFullFileName: the file name with full path in jar.//newFilePath: the new file direct…