2

我正在使用UITextView在屏幕上显示文本。我也想在同一个TextView中显示HTML文本。我想要的是,当字符串包含任何HTML数据时,它应该根据HTML格式化程序显示,否则textview应该使用我定义的字体。检查NSString是否是非HTML的HTML字符串?

这里是我使用TextView的显示HTML文本代码:

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] == [ /没有标签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

嗯,我知道你的意思...很难知道,因为HTML是简单的标签,你不知道他们什么时候开始或结束没有任何标记... –

+0

您可以使用正则表达式来匹配HTML文本,这个链接可能是有用的http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx/然后应用常规扩展到你的'NSString',如这里所示http://stackoverflow.com/questions/9661690 /使用正则表达式找到的替换子串合的NSString –