2013-05-01 104 views
4

也許這不是一個錯誤,因爲文檔沒有多少說明fromHTML()到底是什麼,但這對我來說仍然是一個問題。如果提供的字符串包含在序列中的兩個或多個空格,fromHTML()刪除所有,但一個:Html.fromHTML刪除雙倍空間

Html.fromHtml("Test 123").toString() 
    (java.lang.String) Test 123 

如果我更換 它似乎像預期,但使我悲傷在我的程序的其他部分的空間:

Html.fromHtml("Test  123").toString() 
    (java.lang.String) Test 123 

這是預期的行爲嗎?

回答

2

這是HTML通常如何處理空白的呈現。

HTML Spec強調礦):

注意,詞語之間的白色空間的源 文檔中的序列可導致完全不同的呈現單詞間 間距(除了在PRE元素的情況)。 特別是,用戶 代理在生成輸出字間空間時應摺疊輸入空白序列。這可以而且應該甚至在 沒有語言信息進行


fromHtml功能的目標是在視覺上呈現基於所包含HTML文本,因此它是有道理的,它會跟HTML渲染規則儘可能地接近。

如果您想精確保留空格,您可以看到fromHtml()是否支持<pre>標記?

7

是的,這是因爲這就是Html的行爲。

做這樣的事情:

String myText = "Test 123"; 
Html.fromHtml(myText.replace(" ", "&nbsp;")).toString() 

通過這種方式,它保留您的字符串的原始值。

+0

原始值是「」(空白s步速字符),如Html.fromHtml(myText.replace(「」,「 」))。toString()將其轉換爲 。當我嘗試將「 」重新替換爲「」時,我仍然得到空格字符不是「」(空格字符)而是「 」的新字符串。所以你周圍的任何工作都知道這個問題? – Pallavi 2014-03-24 08:34:57

+0

這使得像 2017-02-26 17:48:54

-3

我用了以下,它的工作!

myText = myText.replaceAll(" ", "%20"); myText = Html.fromHtml(myText).toString(); myText = myText.replaceAll("%20", " ");

0

最好的辦法爲我工作100%

This答案的作品,但引起的副作用對一些標籤的風格類似<font color=#FFFFFF>Text</font>

爲了解決這個問題,只是忽略與這樣一個空間:

// htmlText = "This is test"; 
public String fixDoubleSpaceIssue(String htmlText) 
{ 
    htmlText= text.replace(" ", "&nbsp;&nbsp;&nbsp;"); 
    htmlText= text.replace(" ", "&nbsp;&nbsp;"); 
    return htmlText; 
}