2016-02-17 2 views
-1

У меня есть строка ниже, которая содержит некоторые пользовательские теги. Я хочу удалить эти теги из 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]" 
+1

'Темп = temp.replace ("[B]", "")' – Ferrybig

+0

Вы можете :). Кстати, вы что-то пробовали? – TheLostMind

+0

'temp = temp.replaceAll (" \\ [/? \\ w \\] "," ")' может быть? – khelwood

ответ

0

Вы можете использовать вместо() для каждого набора символов, которые вы хотите удалить, как это:

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]", ""); 
+0

Это не сработает. Заменить возвращает новую строку. –

0
String cleanedString = temp.replaceAll("\\[[a-zA-Z\\/]+\\]", ""); 
+0

Это не работает, так как это java, и у вас есть несколько незаконных escape-символов. – Dan

+0

Да, извините, забыли двойную обратную косую черту –

+0

Thats лучший код для java – Dan

2

Вы можете сделать это достаточно легко с replaceAll, который принимает регулярное выражение ,

temp = temp.replaceAll("\\[/?\\w\\]","") 

\\[ означает буквального левую квадратную скобку.
/? означает дополнительную косую черту.
\\w означает символ слова (например, букву).
\\] означает буквальный прямоугольный кронштейн.

Эта последовательность в комбинации должна соответствовать всем тегам, которые вы указали в своем вопросе, и заменить их пустой строкой, чтобы эффективно удалить их.

+0

Из интереса мой или ваш более эффективный? – Dan

+0

Наверное, мой, поскольку в нем нет '*', но я не мог сказать точно. – khelwood

+0

Хорошо. Просто интересуюсь – Dan

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, работает вот так.

  • \\[ Матчи характер [ буквально
  • (.*?) является группа записи, которая соответствует любому, за исключением новых символов строки.
    • *? ленивый квантор, который соответствует всем символам между ними [] в этом случае
  • \\] Матчи характер ] буквально
-1

Что я хотел бы сделать это, чтобы сделать регулярное выражение и использование метод replace_all() примерно такой:

temp.replaceAll("\\[[a-zA-Z\\/]+\\]", ""); 

Этот post может вам помочь.

Используйте это, чтобы сделать свой собственный регулярное выражение и проверить: Regex Tester