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

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

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

Автор: Krjuger 18.04.2012 19: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 20:54

String.Replace

Автор: Krjuger 18.04.2012 21:55

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

Автор: IUnknown 18.04.2012 22: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 23:36

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

Автор: IUnknown 19.04.2012 15: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 13:55

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

Автор: nishaknapp 30.07.2022 16:24

Why not settling on games that is fun and at the same time your earning. Well itll make suspense because of the game as well but dude just try it and it gave me hope while pandemic is real rn. https://www.gamersofperu.com/3-key-reasons-why-people-choose-to-play-baccarat-online/