2

Я использую UITextView для отображения текста на экране. Я также хочу отображать HTML-текст в том же TextView. Я хочу, когда строка содержит любые данные HTML, она должна отображаться в соответствии с форматом HTML, иначе textview должен использовать шрифт, определенный мной.Проверьте, не является ли NSString HTML-строка на не-HTML?

Вот код, я использую для отображения текста HTML в TextView:

NSString *htmlString = promotion.content; 
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];  
self.promotionTextView.attributedText = attributedString; 

Я просто хочу, чтобы проверить, если строка, что я получаю в HTMLString содержит какие-либо данные HTML или нет. Как я могу это сделать?

+0

Является ли он хорошо сформированным HTML? Покажите пример того, что вы можете ожидать. Что в HTML гарантировано там? – Wain

+0

На самом деле нет конкретного формата для html, любой тег в тексте будет считаться html – Santosh

+0

Возможно, при сравнении длин: 'if ([[htmlString dataUsingEncoding: NSUnicodeStringEncoding] length]' == '[attribitedString length]) {//Нет тегов HTML интерпретированы} ' – Larme

ответ

0

Я хотел бы посмотреть на HTML начало/конец этикетки и получить подстроку между ними, что-то вроде этого:

- (NSString *)htmlFromString:(NSString *)string 
{ 
    NSString *htmlString = nil; 

    if([string rangeOfString:@"<html>"].location != NSNotFound && [string rangeOfString:@"</html>"].location != NSNotFound) { 

     NSRange firstRange = [string rangeOfString:@"<html>"]; 
     NSRange secondRange = [string rangeOfString:@"</html>"]; 

     if(firstRange.location < secondRange.location) { 

      NSRange htmlRange = NSMakeRange(firstRange.location, secondRange.location + secondRange.length); 
      htmlString = [string substringWithRange:htmlRange]; 
     } 

    } 

    return htmlString; 
} 

Я не пробовал, но думаю, что он должен работать.

+0

На самом деле может быть возможно, что строка содержит только тег или тег . Не важно, чтобы строка была правильной форматированной HTML-строкой. – Santosh

+0

mmm Я знаю, что вы имеете в виду ... трудно узнать, так как html - это простые теги, и вы не знаете, когда они начинаются или заканчиваются без какой-либо отметки ... –

+0

Вы можете использовать регулярное выражение для соответствия html-тексту, эта ссылка может быть полезна http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx/, а затем применить регулярное расширение к вашему 'NSString', как показано здесь http://stackoverflow.com/questions/9661690/потребительной регулярное выражение к найти замены-подстроку-в-NSString –

Смежные вопросы