在同一字符串的不同部分中使用替换

时间:2018-12-29 14:55:52

标签: java

我这里有一个情况,我有一个String,我必须将此<br>替换为<br />。为此,我可以使用全部替换或替换,但是文本的某些部分具有<br style='font-size: 14px;'> <a><a/>,并且需要替换为<br style='font-size: 14px;' /> <a><a/>以及同一字符串中的任何其他类似情况;

IN

"<br> text here <br/> text here <br> text here <br style='font-size: 14px;'> <a><a/>"

已退出

"<br /> text here <br /> text here <br /> text here <br style='font-size: 14px;' /> <a><a/>"

您能用这种简单的逻辑帮助我吗?仅替换<br个案例

1 个答案:

答案 0 :(得分:1)

也许这会有所帮助。这是正则表达式代码的可能性:

package com.jesperancinha.string;

public class StringReplaceBr {

    public static  String closeBrTags(String a){
        return a.replaceAll("<br(\\/)?([a-zA-z0-9='-:; \"]*)>", "<br$2 />");
    }
}

这是检查它的单元测试:

package com.jesperancinha.string;


import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

class StringReplaceBrTest {


    @Test
    void closeSingleAlreadyClosed() {
        assertThat(StringReplaceBr.closeBrTags("<br/>"))
                .isEqualTo("<br />");
    }

    @Test
    void closeSingleNotClosed() {
        assertThat(StringReplaceBr.closeBrTags("<br>"))
                .isEqualTo("<br />");
    }

    @Test
    void closeSingleMixedNotClosed() {
        assertThat(StringReplaceBr.closeBrTags("<br style=\"\" somethingElse=''>"))
                .isEqualTo("<br style=\"\" somethingElse='' />");
    }

    @Test
    void closeBrTags() {
        assertThat(StringReplaceBr.closeBrTags("<br> text here <br/> text here <br> text here <br style='font-size: 14px;'> <a><a/>"))
                .isEqualTo("<br /> text here <br /> text here <br /> text here <br style='font-size: 14px;' /> <a><a/>");
    }

    @Test
    void closeBrTagsDoubleQuotes() {
        assertThat(StringReplaceBr.closeBrTags("<br> text here <br/> text here <br> text here <br style=\"font-size: 14px;\"> <a><a/>"))
                .isEqualTo("<br /> text here <br /> text here <br /> text here <br style=\"font-size: 14px;\" /> <a><a/>");
    }

    @Test
    void closeBrSmall() {
        assertThat(StringReplaceBr.closeBrTags("<br/> <br> <br/> <a><a/> <br wow=''>"))
                .isEqualTo("<br /> <br /> <br /> <a><a/> <br wow='' />");
    }

}