2016-02-05 3 views
-3

В моем приложении я сравниваю строки. У меня есть строки, которые выглядят одинаково, но некоторые из них содержат пробелы, а другие содержат nbsp, поэтому, когда я их сравниваю, я понимаю, что они разные. Однако они представляют одну и ту же сущность, поэтому у меня возникают проблемы, когда я их сравниваю. Вот почему я хочу декодировать строки, которые я сравниваю. Таким образом, nbsp будет преобразован в пространство в обеих строках, и при сравнении я получаю равные значения. Так вот что я делаю:Как работает декодирование html?

HttpUtility.HtmlDecode(string1)[0] 
HttpUtility.HtmlDecode(string2)[0] 

Но я все еще получаю, что string1 [0] имеет ASCII код 160, и string2 [0] имеет ASCII-код 32.

Очевидно я не понять концепцию , Что я делаю не так?

+5

Неразрывное пространство и пробелы - разные символы. Они не равны. См. ['Char.IsWhiteSpace (Char)'] (https://msdn.microsoft.com/en-us/library/t809ektx%28v=vs.110%29.aspx) – cubrr

+0

«они представляют одно и то же сущность» на основе какая логика? Определите свое единство *. – Andrey

+0

Возможный дубликат [  в боковом коде сервера asp.net?] (Http://stackoverflow.com/questions/12196266/nbsp-in-asp-net-server-side-code) –

ответ

1

Вы пытаетесь сравнить двух разных персонажей, как бы они ни казались вам.

То, что у них разные коды символов, достаточно, чтобы сравнение не получилось. Самое простое - заменить нераспространяющееся пространство на регулярное пространство, а затем сравнить их.

bool c = html.Replace('\u00A0', ' ').Equals(regular); 
+0

Но разве это не то, что я делаю с HtmlDecode? –

+1

Нет, вы просто декодируете HTML и возвращаете символ с кодом 160. –

Смежные вопросы