2015-08-04 2 views
0

Я пытаюсь удалить пустые <p></p> теги из моей строки, содержимое которой html. Я попытался использовать регулярное выражение, например;Удалить пустой <p></p> теги из html Строка в Swift

let deleteRegex = NSRegularExpression(pattern: "<p[^>]*><\\/p[^>]*>", options: NSRegularExpressionOptions.allZeros, error: nil) 
deleteRegex?.stringByReplacingMatchesInString(comment.text!, options: NSMatchingOptions.allZeros, range: NSMakeRange(0, (comment.text! as NSString).length), withTemplate: "") 

Однако я не добился успеха. Любая помощь будет оценена по достоинству.

+0

использование JQuery .. $ ('HTMLString'). Найти ('р'). Удалить() – Raghavendra

+0

Я хотел бы сделать это в стороне клиента. Спасибо в любом случае @raghavendra. – ridvankucuk

+0

Я не хочу удалять целые html-теги, если вы читаете мой вопрос. @EricD. – ridvankucuk

ответ

2

Вы можете использовать следующий фрагмент кода, чтобы удалить все пустые p теги:

var string = "Text here<p class=\"myclass\"></p> and here<p></p>" 
let str = string.stringByReplacingOccurrencesOfString("(?i)<p\\b[^<]*>\\s*</p>", withString: "", options: .RegularExpressionSearch, range: nil) 
print(str) 

Вам не нужно бежать /, но граница слова обязательно будет соответствовать тегу p как целому слову. [^<]* будет соответствовать произвольным атрибутам. \\s* будет соответствовать необязательным пробелам между открытием и закрытием p теги.

Вот regex demo

+0

Спасибо, это решило мою проблему :) – ridvankucuk

+0

'[^ <]' должно быть '[^>]'. В этом случае результат будет таким же, но '[^>]' должен быть относительно быстрым. – rintaro

+0

@ rintaro: Я бы использовал его несколько лет назад, но '>' не нужно xmlified, а '<' всегда должно быть. Таким образом, по соображениям безопасности я всегда предпочитаю '[^ <] *' проверять, находимся ли мы внутри узла. –

1

Пожалуйста, используйте этот шаблон для удаления р-тег:

"(?i)<p[^>]*>" 
Смежные вопросы