java字符串中${}或者{}等的占位符替换工具类
正如标题所述,这是一个替换java字符串中${}或者{}等占位符的工具类,其处理性能比较令人满意。该类主要通过简单的改写myatis框架中的GenericTokenParser类得到。在日常开发过程中,可以将该类进行简单的改进或封装,就可以用在需要打印日志的场景中,现在张贴出来给有需要的人,使用方式参考main方法,不再赘述!
publicclassParser{ /** *将字符串text中由openToken和closeToken组成的占位符依次替换为args数组中的值 *@paramopenToken *@paramcloseToken *@paramtext *@paramargs *@return */ publicstaticStringparse(StringopenToken,StringcloseToken,Stringtext,Object...args){ if(args==null||args.length<=0){ returntext; } intargsIndex=0; if(text==null||text.isEmpty()){ return""; } char[]src=text.toCharArray(); intoffset=0; //searchopentoken intstart=text.indexOf(openToken,offset); if(start==-1){ returntext; } finalStringBuilderbuilder=newStringBuilder(); StringBuilderexpression=null; while(start>-1){ if(start>0&&src[start-1]=='\\'){ //thisopentokenisescaped.removethebackslashandcontinue. builder.append(src,offset,start-offset-1).append(openToken); offset=start+openToken.length(); }else{ //foundopentoken.let'ssearchclosetoken. if(expression==null){ expression=newStringBuilder(); }else{ expression.setLength(0); } builder.append(src,offset,start-offset); offset=start+openToken.length(); intend=text.indexOf(closeToken,offset); while(end>-1){ if(end>offset&&src[end-1]=='\\'){ //thisclosetokenisescaped.removethebackslashandcontinue. expression.append(src,offset,end-offset-1).append(closeToken); offset=end+closeToken.length(); end=text.indexOf(closeToken,offset); }else{ expression.append(src,offset,end-offset); offset=end+closeToken.length(); break; } } if(end==-1){ //closetokenwasnotfound. builder.append(src,start,src.length-start); offset=src.length; }else{ ///////////////////////////////////////仅仅修改了该else分支下的个别行代码//////////////////////// Stringvalue=(argsIndex<=args.length-1)? (args[argsIndex]==null?"":args[argsIndex].toString()):expression.toString(); builder.append(value); offset=end+closeToken.length(); argsIndex++; //////////////////////////////////////////////////////////////////////////////////////////////// } } start=text.indexOf(openToken,offset); } if(offset总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接