是否有使用正则表达式模式提供字符串重写功能的库?例如,我想将每个“$[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库,但还没有设法找到匹配的功能。当然我可以自己创建它,但我宁愿使用库代码。
答案 0 :(得分:2)
内置String.replaceAll
方法会执行此操作,但您需要转义一些$
符号。这样的事情应该有效:
content.replaceAll("\\$([a-zA-Z]+)", "<img src='symbol/old$1.png' />");
答案 1 :(得分:1)
在up&amp;即将到来的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);