Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Другие языки _ Замена кода спец. символа на сам символ.

Автор: Krjuger 18.04.2012 15:05

У меня есть например вот такая строка.


string input = "(¬X^¬Y^Z)v(¬X^Y^¬Z)v(¬X^Y^Z)v(X^¬Y^Z)v(X^Y^¬Z)";

Я вывожу ее в textBox на форме.Как сделать в С# ,чтобы "¬" отображался в виде значка отрицания?

Блин, здесь они автоматически заменяются на нужный мне символ. В общем в строке вместо символов написано "& # 172;"

Автор: TarasBer 18.04.2012 16:54

String.Replace

Автор: Krjuger 18.04.2012 17:55

Видать я не совсем правильно выразиблся.Ладно попробуем так.
Если я счас ввиду "& # 172", но без пробелов и нажму отправить,но вместо этого я увижу символ ¬. Можно ли как нибудь сделать так,чтобы строка, введенная в коде программы при помощи вот этих кодов спецсимволов в textBox'e обображалась уже самими символами.Без непосредственных манипуляций с Replace.Там порядка 8 спец символов различных и для каждого делать Replace как то неправильно.Ведь на форуме они автоматически заменяются,неужели в текст боксах такого нет?

Автор: IUnknown 18.04.2012 18:56

Форумы - это форумы, а компоненты, не предназначенные для HTML-рендеринга (вот в Qt компоненты предназначены для него, ты можешь просто написать в QLabel строку "<b><i>test</i></b>" и получишь выделенный и наклоненный текст, в Шарпе - нет).

Если б было не 172, а AC (т.е., в 16-ричном формате), то экранирование Юникодных символов:
"(\u00ACX^\u00ACY^Z)v(\u00ACX^Y^\u00ACZ)v(\u00ACX^Y^Z)v(X^\u00ACY^Z)v(X^Y^\u00ACZ)"
решает проблему. Десятичные коды записывать нельзя, к сожалению...

Автор: Krjuger 18.04.2012 19:36

Пичально.Ладно,будем думать.

Автор: IUnknown 19.04.2012 11:53

Можно Replace-ом заменить сразу все подобные коды на символы:

	textBox1.Text = 
Regex.Replace(
s, @"&#([0-9]{3});",
delegate(Match match)
{ return Char.ConvertFromUtf32(Convert.ToInt32(match.Value.Substring(2, 3))); }
);
Вот что получается:
Прикрепленное изображение
(вставил картинку, ибо форум опять сам всё заменит и будет не то, что нужно). В .NET 4 можно заменить делегат на "=>", насколько мне известно.

Автор: garri-potter 23.04.2013 9:55

да регулярки рулят good.gif