2012-11-26 15 views
11

今まで私はHttpUtility.HtmlDecode(" ")がスペースだったと思っていました。しかし、以下のコードは常にfalseを返します。同じhtmlコード化されたスペースのコードは空白ではありません

string text = " "; 

text = HttpUtility.HtmlDecode(text); 

string space = " "; 

if (String.Compare(space, text) == 0) 
    return true; 
else 
    return false; 

それはそうですなぜ私はServer.HtmlDecode()

てみては?

すべてのヘルプははるかに

おかげで、 N

+1

を1つの文字列が他の文字列より小さいか大きいかに関係なく0)。代わりに、2つの文字列が等しいかどうかを判断するには、StringEquals(String、String、StringComparison)メソッドを使用してください。 " - http://msdn.microsoft.com/en-us/library/fbh501kz.aspx – Habib

+2

@Habib以上、ほとんどの場合、 '=='だけです。 –

答えて

13

HTMLエンティティ はスペースを表していないと認識されるであろう、それは改行なしスペースを表します。

改行なしスペースは、文字コード160があります。また

string nbspace = "\u00A0"; 

、マルクGravellが気づいて、あなたが文字を取得するために二回、それをデコードする必要がありますので、あなたは二重の、コードをコード化しているが:

string text = " "; 
text = HttpUtility.HtmlDecode(HttpUtility.HtmlDecode(text)); 
+0

詳細については、http://en.wikipedia.org/wiki/Non-breaking_spaceを参照してください。 – Lloyd

+0

"& nbsp;"私は、質問を提出するときに、このページがスペースと見なすと仮定したように追加しました。気にしないで 。私は編集を試みます – user1481853

+0

応答に感謝します。今、私が望むのは、通常のスペースとして ' 'のHtmlDecodeを返すことです。私はどうしたらいいですか? String.Replace以外の方法 – user1481853

2

 のHTMLは、スペースのあらゆる種類を意味するものではありません。文字通り、テキスト を意味します。たとえば、HTMLについて書いているHTMLを書く場合は、 のテキストを含める必要があります。これは、HTML  を書くことによって行います。

あなたが持っていた場合:その後、

string text = " "; 

非破壊空間にデコードするだろうと。

2

私はこのようなhtmlの掃除だ:以外ノーブレークスペース、 `あなたが明示の戻り値を探すために、つまり(平等をテストするCompareメソッドを使用してはならないから

var text = WebUtility.HtmlDecode(html) 
     .Replace("\u00A0", " ") // Replace non breaking space with space. 
     .Replace(" ", " ") // Shrink multiple spaces into one space. 
     .Trim(); 
関連する問題