首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Java Regex替换重复模式如图所示

Android Java Regex替换重复模式如图所示
EN

Stack Overflow用户
提问于 2014-01-22 14:49:48
回答 1查看 120关注 0票数 0

我有以下bbcode,比方说369要转换为<img src ...http// />

但是当涉及到替换多个项目时,比如

代码语言:javascript
复制
 [369] [369] [369] [369]

,它将使用以下替换的字符串1、2、3、4标记,总计分别为10。

代码语言:javascript
复制
<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// />

输入

代码语言:javascript
复制
班仔比人陰返轉頭[369] [369] [369] <br/>BTW大家入黎咩都傾下,我地好warm的#yup# #yup# #yup#

我希望实现字符串替换,并提供所需的输出:

代码语言:javascript
复制
班仔比人陰返轉頭<img src ...http// /> <img src ...http// /><img src ...http// />  <br/>BTW大家入黎咩都傾下,我地好warm的<img src ...http// /><img src ...http// /><img src ...http// />

但当涉及到死刑..。实际产出:

代码语言:javascript
复制
班仔比人陰返轉頭<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// /> 

您能帮我检查一下是否有时间循环导致重复更换发生吗?

下面是我的代码:

代码语言:javascript
复制
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();
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-22 15:09:33

如果我理解了您的意思,您需要用一个字符串替换所有的模式锁定,这样您就可以这样做了:

代码语言:javascript
复制
public String replace(String text , String bbcode , String imageLocation ){
    return text.replaceAll(Pattern.quote(bbcode), "<img src=\"" + imageLocation + "\" />");
}

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21286129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档