我有以下bbcode,比方说369要转换为<img src ...http// />
但是当涉及到替换多个项目时,比如
[369] [369] [369] [369],它将使用以下替换的字符串1、2、3、4标记,总计分别为10。
<img src ...http// /> <img src ...http// /><img src ...http// /> <img src ...http// /><img src ...http// /><img src ...http// /> <img src ...http// /><img src ...http// /><img src ...http// /><img src ...http// />输入
班仔比人陰返轉頭[369] [369] [369] <br/>BTW大家入黎咩都傾下,我地好warm的#yup# #yup# #yup#我希望实现字符串替换,并提供所需的输出:
班仔比人陰返轉頭<img src ...http// /> <img src ...http// /><img src ...http// /> <br/>BTW大家入黎咩都傾下,我地好warm的<img src ...http// /><img src ...http// /><img src ...http// />但当涉及到死刑..。实际产出:
班仔比人陰返轉頭<img src ...http// /> <img src ...http// /><img src ...http// />
<img src ...http// /><img src ...http// /><img src ...http// /> <br/>BTW大家入黎咩都傾下,我地好warm的<img src ...http// /> <img src ...http// /><img src ...http// />
<img src ...http// /><img src ...http// /><img src ...http// /> 您能帮我检查一下是否有时间循环导致重复更换发生吗?
下面是我的代码:
public String replace(String text , String bbcode , String imageLocation ){
StringBuffer imageBuffer = new StringBuffer ("");
Pattern pattern = Pattern.compile(Pattern.quote(bbcode));
Matcher matcher = pattern.matcher(text);
StringBuilder builder = new StringBuilder();
int i = 0;
while (matcher.find()) {
imageBuffer.append("<img src=\"" + imageLocation + "\" />");
String replacement = imageBuffer.toString();
builder.append(text.substring(i, matcher.start()));
if (replacement == null) {
builder.append(matcher.group(0));
break;
} else {
builder.append(replacement);
}
i = matcher.end();
}
builder.append(text.substring(i, text.length()));
return builder.toString();
}发布于 2014-01-22 15:09:33
如果我理解了您的意思,您需要用一个字符串替换所有的模式锁定,这样您就可以这样做了:
public String replace(String text , String bbcode , String imageLocation ){
return text.replaceAll(Pattern.quote(bbcode), "<img src=\"" + imageLocation + "\" />");
}希望能帮上忙。
https://stackoverflow.com/questions/21286129
复制相似问题