2014-09-24 49 views
1

基本上,我將通過網站JSON API從原始HTML接收的HTML代碼轉換爲屬性字符串。這種努力去除了一些HTML特定的代碼,同時也保留了某種程度的格式,如下劃線/粗體文本等。但是,我遇到了一個問題,轉換爲屬性字符串的HTML代碼似乎忽略了任何空白行。使用NSHTMLTextDocumentType從HTML代碼創建的NSAttributedString將空行轉換爲空格

因此,例如:

  1. 步驟之一。
  2. 第二步。
  3. 第三步。

變爲:

  1. 步驟之一。 2.第二步。 3.第三步。

無論出於何種原因,它看起來好像是用新行代替空格。我似乎無法解決這個問題,但它使這個功能基本上無法使用。我寧願使用一個包含的API來處理轉換,因爲可用的幾個類別似乎無法處理所有的HTML,所以在單元格中留下了一些東西,這是我不能使用的。此外,我更喜歡使用其中一種包含的API,因爲它在未來的版本中不太可能被破解。有沒有什麼可以做到克服這一點,或者這是一個錯誤?對於它的價值,我使用的是設備上的iOS 7

NSMutableAttributedString* attrStr = [[NSMutableAttributedString alloc] initWithData:[post.comment dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:nil error:nil]; 
NSRange rangeOfTitle = NSMakeRange(0,[attrStr length]); 
[attrStr addAttribute: NSFontAttributeName value:[UIFont systemFontOfSize: 14.0f] range:rangeOfTitle]; 
+0

你能展示你的例子的html代碼嗎? – Larme 2014-09-24 11:00:26

+0

@大人當然可以。這是一個4chan評論。以下是從JSON API獲得的HTML副本的鏈接:http://pastebin.com/6k903qp7 – Terry 2014-09-24 11:13:05

+0

我試過了你的代碼,沒有得到問題:http://imgur.com/4FwmUHU – Larme 2014-09-24 11:22:31

回答

0

[yourString stringByReplacingOccurrencesOfString:@ 「\ n」 withString:@ 「\ </BR>」];

然後做你的轉換。這應該工作。

注意:您還可以檢查爲「\ r」 - >換行

+0

您解開了代碼的格式,導致第二個字符串參數看起來不正確(因爲'
'是HTML並直接發送到瀏覽器,而不是顯示它)。 – 2014-12-03 04:23:02

+0

我實際遇到的問題是我實際上已經實現了我自己的HTML剝離類,並且還有一個影響接收到的HTML的剩餘部分。所以基本上發生了什麼是
標籤被替換爲/ n換行符,因爲@KenThomases說,
將解釋換行符並顯示它,而/ n是沒有意義的,因爲沒有包含某些使其相關的標籤。這基本上就像添加空白代碼,它不會改變編譯結果的作用,但源代碼看起來有些不同。 – Terry 2014-12-03 10:12:12

+1

@ Terry174,我的評論實際上只是關於nferocious76在Stack Overflow上的答案。他的答案包含一個字符串文字「@」
「'但這並不明顯,因爲他的代碼沒有被格式化爲代碼。我將它編輯成代碼格式,但他編輯回來,我不明白爲什麼,因爲這使得他的答案看起來錯了。 – 2014-12-03 16:12:44

0

不幸的是我早就忘記了這個問題,因爲它被張貼,直到我接到通知,有人提出了一個答案。這個問題的原因以及爲什麼它不能被其他人重新創建的原因很簡單,因爲HTML實際上正在被解析並且換行符被轉換爲\ n新行。這更多的是來自我正在編寫的HTML剝離類的人造物,但隨後決定以不同的方式處理它。不幸的是,由於我放置了這種方法的尷尬場所,它並不是很明顯。

+0

@ Terry147我們正面臨同樣的問題獲得最大的差距之間的文字..我們已經嘗試過你的解決方案BT不能排序這個問題可以你可以分享幫助我們。 – Kalyani 2016-03-08 07:09:13

相關問題