[英]Java String rewriting based on a pattern
是否有使用正则表达式模式提供字符串重写功能的库? 例如,我想将每个“ $[a-zA-Z]+
”重写为“ <\\img src='$old.png' />
”。
我正在寻找的API类型如下:
SomeUtils.replaceAll(content, "$[a-zA-Z]+", new StringRewriter() {
String rewrite(String old) { return "<img src='symbol/" + old + ".png' />"; }
});
我浏览了Java库和Apache Commons库,但尚未设法找到匹配的功能。 当然我可以自己创建它,但是我宁愿使用库代码。
内置的String.replaceAll
方法将执行此操作,但是您需要转义一些$
符号。 这样的事情应该起作用:
content.replaceAll("\\$([a-zA-Z]+)", "<img src='symbol/old$1.png' />");
在即将StrSubstitutor
Commons / Lang 3中 ,将有一个内置的模板引擎: StrSubstitutor
用法示例:
String str = StrSubstitutor.replaceSystemProperties(
"You are running with java.version = ${java.version} "
+ "and os.name = ${os.name}.");
解:
在您的情况下,您将必须实现自定义StrLookup
来插值变量:
StrLookup<String> yourCustomResolver = new StrLookup(){
public String lookup(String key){
return "<img src=\"" + key + ".png\" />";
}
}
String str = new StrSubstitutor(yourCustomResolver).replace(inputString);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.