Заменить непрерывный пробел одним пробелом и несколькими "" элементами - PullRequest
2 голосов
/ 22 сентября 2011

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

<B>This is          Whitespace      Node </B>

Когда этот html отображается в браузере, более одного непрерывного пробела в html всегда отображается как один пробел.Чтобы избежать этой проблемы, я хочу заменить непрерывные пробелы одним пробелом и несколькими элементами &nbsp;.

Какое наилучшее решение для этого?

Я использую C # 2005.

Ответы [ 4 ]

2 голосов
/ 22 сентября 2011

Попробуйте,

string str = "<B>This is          Whitespace      Node </B>";
Regex rgx = new Regex("([\\S][ ])");
string result = rgx.Replace(str, "$1.")
                        .Replace(" .","?")
                        .Replace(" ","&nbsp")
                        .Replace("?"," ");
1 голос
/ 22 сентября 2011

Используйте свойство CSS white-space согласно http://www.w3.org/TR/CSS2/text.html#white-space-prop

white-space: pre-wrap

Или, если вы действительно хотите сделать это с помощью bruteforce, замените два последовательных пробела неразрывным пробеломнормальное пространство ... я настоятельно рекомендую против этого.

string text = originalText.Replace("  ", "&nbsp; ");
0 голосов
/ 22 сентября 2011

Я полагаю, вы устанавливаете значение элемента управления из кода позади?Если это так, то ...

<strong><asp:Literal id="myLiteral">This is          Whitespace      Node </asp:Literal></strong>

И в коде позади ...

var myText = "This is          Whitespace      Node ";
myLiteral.Text = myText.Replace(" ", "&nbsp;");

Если нет кода позади или нет в буквальном ... ... 1007 *

<strong><%= "This is          Whitespace      Node ".Replace(" ", "&nbsp;") %></strong>
0 голосов
/ 22 сентября 2011

Вы можете попробовать

String.Replace("  ", " ")

, если вы предпочитаете регулярное выражение

Regex rgx = new Regex("([ \t]|&nsbp)+");
string result = rgx.Replace(input, " ");
...