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 –