0

私はヘルパーメソッドを持っています:

public static string StripHtml(this string text)
{
    text = HttpUtility.HtmlDecode(text);
    text = Regex.Replace(text, @"<(.|\n)*?>", "");

    return text;
}

そして単体テスト:

[Test]
public void StripHtmlConvertsNbspEntityIntoSpace()
{
    string result = "A&nbsp;B".StripHtml();
    Assert.AreEqual("A B", result);
}

単体テストを実行すると、次のエラーで失敗します。

 String lengths are both 3. Strings differ at index 1.
  Expected: "A B"
  But was:  "A B"
  ------------^

私の質問は、なぜ&nbsp;スペース文字にデコードされなかったのですか?

4

3 に答える 3

1

  は、スペース文字ではなく非改行スペース文字にデコードされ、同じユーザーを探しますが、別の文字です。

alt+255 を押すと改行なしのスペース alt+32 になります。見たい場合はノルマン スペースです。

テキスト出力を保存して 16 進エディタで見ると、通常のスペースとは別の 16 進値を取得していることに気付くはずです。

于 2013-07-23T07:48:23.147 に答える
0

  スペースとは別の文字です。単体テストは正しいです。http://en.wikipedia.org/wiki/Space_characterを参照してください

于 2013-07-23T07:49:30.617 に答える