设为首页 收藏本站
查看: 1373|回复: 0

[经验分享] Apache StrSubstitutor使用方法

[复制链接]

尚未签到

发表于 2017-12-24 11:59:23 | 显示全部楼层 |阅读模式
  Java中,对于格式化字符串,不论是String.format,还是MessageFormat,都很难用。Velocity倒是不错,可就是太重。今天给大家推荐Apache commons-lang中的StrSubstitutor。
  文档地址:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/StrSubstitutor.html
  StrSubstitutor在apache的commons-lang3包中,要使用,请在pom.xml里加入如下依赖:
  

1 <dependency>  
2     <groupId>org.apache.commons</groupId>
  
3     <artifactId>commons-lang3</artifactId>
  
4     <version>3.4</version>
  
5 </dependency>
  

  1、直接替换系统属性值
  

StrSubstitutor.replaceSystemProperties(  

"You are running with java.version = ${java.version} and os.name = ${os.name}.");  

  2、使用Map替换字符串中的占位符
  

Map valuesMap = HashMap();  valuesMap.put(
"animal", "quick brown fox");  valuesMap.put(
"target", "lazy dog");  
String templateString
= "The ${animal} jumped over the ${target}.";  

  StrSubstitutor sub
= new StrSubstitutor(valuesMap);  
String resolvedString
= sub.replace(templateString);  

  resolvedString的结果:The quick brown fox jumped over the lazy dog.
  3、StrSubstitutor会递归地替换变量,比如:
  

Map<String, Object> params = Maps.newHashMap();  
params.put(
"name", "${x}");  
params.put(
"x", "y");  StrSubstitutor strSubstitutor
= new StrSubstitutor(params);String hello2 = "${name}";  System.out.println(strSubstitutor.replace(hello2));
  

  最后会输出:y
  4、有时变量内还嵌套其它变量,这个StrSubstitutor也是支持的,不过要调用下setEnableSubstitutionInVariables才可以。
  

Map<String, Object> params = Maps.newHashMap();  
params.put(
"jre-1.8", "java-version-1.8");  
params.put(
"java.specification.version", "1.8");  
StrSubstitutor strSubstitutor
= new StrSubstitutor(params);  

  
strSubstitutor.setEnableSubstitutionInVariables(
true);  
System.out.println(strSubstitutor.replace(
"${jre-${java.specification.version}}"));  

  输出:java-version-1.8

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427490-1-1.html 上篇帖子: centos7搭建SVN+Apache+IF.svnadmin支持https实现web管理SVN 下篇帖子: Maven 命令行创建项目时 Could not find goal ‘create’ in plugin org.apache.maven.plugins:.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表