我这里有一个情况,我有一个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
个案例
答案 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='' />");
}
}