анализ строки c # - PullRequest
       20

анализ строки c #

0 голосов
/ 11 апреля 2010

У меня есть строка, например, ":) text:) text :) :-) word :-(" Мне нужно добавить ее в текстовое поле (или в другое место), с условием:

Вместо':)', ':-(' и т. д. необходимо вызвать функцию, которая вводит определенный символ

Я думаю, существует решение с конечным автоматом, но как его реализовать, не знаю. Жду советов.

обновление:":) текст :)(":)") и отображает изображение в текстовом поле

update: Мне нравится идея с делегатами и Regex.Replace.Могу ли я при встрече ':)' отправить параметру делегата ':)', а при встрече ':(' другой параметр.

update: Найдено решение с преобразованием в char и сравнением каждогосимвол ':)', если равен равен. smile (':)')

Ответы [ 3 ]

8 голосов
/ 11 апреля 2010

Вы можете использовать Regex.Replace с делегатом, где вы можете обрабатывать согласованный ввод или вы можете просто использовать string.Replace метод.

Обновлено

Вы можете сделать что-то вроде этого:

        string text = "aaa :) bbb :( ccc";

        string replaced = Regex.Replace(text, @":\)|:\(", match => match.Value == ":)" ? "case1" : "case2"); 

replaced переменная будет иметь значение "aaa case1 bbb case2 ccc" после выполнения.

1 голос
/ 11 апреля 2010

Кажется, вы хотите заменить части строки этими символами, верно? Не нужно создавать это самостоятельно, просто используйте string.Replace. Примерно так:

string text = " :)text :)text:) :-) word :-( ";
text = text.Replace(":)", "☺").Replace(":(", "☹"); // similar for others
textbox.Text += text;

Обратите внимание, что это не самый эффективный код, когда-либо созданный, но если это что-то вроде программы чата, вы, вероятно, никогда не узнаете разницу.

0 голосов
/ 11 апреля 2010

Вы можете просто создать словарь с этими конкретными символами в качестве ключа и получить значение.

...