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
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接