繁体   English   中英

基于模式的Java字符串重写

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM