基于模式的Java String重写

时间:2011-02-22 09:03:36

标签: java string

是否有使用正则表达式模式提供字符串重写功能的库?例如,我想将每个“$[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库,但还没有设法找到匹配的功能。当然我可以自己创建它,但我宁愿使用库代码。

2 个答案:

答案 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);