我有以下字符串,其中包含一些自定义标记。我想从String中删除这些自定义标记。你能帮我解决一下如何删除标签。
String temp = "[p]test to remove tags started with braces [B]bold text [/B][I]italic text [/I] [U]underlined Text[/U] bla bla [/P]"
答案 0 :(得分:2)
您可以使用replaceAll
轻松完成此操作,.next(selector)
接受正则表达式。
temp = temp.replaceAll("\\[/?\\w\\]","")
\\[
表示字面左方括号
/?
表示可选的正斜杠
\\w
表示单词字符(例如字母)
\\]
表示字面右方括号。
此序列组合应与您在问题中列出的所有标记相匹配,并用空字符串替换它们将有效地删除它们。
答案 1 :(得分:0)
您可以对要删除的每组字符使用replace(),如下所示:
temp = temp.replace("[p]", "");
temp = temp.replace("[B]", "");
temp = temp.replace("[/B]", "");
temp = temp.replace("[I]", "");
temp = temp.replace("[/I]", "");
temp = temp.replace("[U]", "");
temp = temp.replace("[/U]", "");
temp = temp.replace("[/P]", "");
答案 2 :(得分:0)
String cleanedString = temp.replaceAll("\\[[a-zA-Z\\/]+\\]", "");
答案 3 :(得分:0)
到目前为止,建议一直很混乱并占用多行,因为它们分别对每个[]进行了解释。这个正则表达式\\[(.*?)\\]
一次处理它们
public class Test {
public static void main(String[] args) {
String temp = "[p]test to remove tags started with braces [B]bold text [/B][I]italic text [/I] [U]underlined Text[/U] bla bla [/P]";
temp = temp.replaceAll("\\[(.*?)\\]","");
System.out.println(temp);
}
}
正则表达式的精彩网站是regex101。这允许您测试自己的正则表达式,看它们是否有效以及如何工作。对于上面给出的click here,就像这样。
\\[
字面匹配字符[
(.*?)
是一个与任何匹配的捕获组,不包括换行符。
*?
是一个惰性量词,在这种情况下匹配[]
之间的所有字符\\]
字面匹配字符]
答案 4 :(得分:-1)
我要做的是制作正则表达式并使用方法replace_all()
,如下所示:
temp.replaceAll("\\[[a-zA-Z\\/]+\\]", "");
此post可能会对您有所帮助。
使用它来制作自己的正则表达式并对其进行测试:Regex Tester