Я пытаюсь создать регулярное выражение, которое заменит значения OrderedDictionary соответствующим кодом «<img src="blah" alt="blah">
».заменить текст смайлика <img> тег
Потому что он также вводит текстовую версию смайлов alt=""
, она соответствует дважды, взрывая все.
Моя текущая попытка ниже.
foreach (string smiley in Smilies.Keys)
{
Regex re = new Regex("(?<!(=\"))" + Smilies[smiley] + "(?<!(\"))");
Trace.WriteLine(re.Replace(msg, @"«img src=""" + path + @"\images\" + Smilies[smiley] + @".gif"" alt=""" + smiley + @"""/»"));
}
Смайлики здесь:
Smilies = new OrderedDictionary();
Smilies.Add(@"O:)", "angel");
Smilies.Add(@":-x", "cheekkiss");
Smilies.Add(@":\", "chin");
Smilies.Add(@"B)", "cool");
Smilies.Add(@":~", "crutches");
Smilies.Add(@"«3", "love");
Smilies.Add(@"»:(", "mad");
Smilies.Add(@"):«", "mad");
Smilies.Add(@":o", "ohmy");
Smilies.Add(@"@(", "ouch");
Smilies.Add(@":)", "smile");
Smilies.Add(@"^_^", "smug");
Smilies.Add(@"^.^", "smug");
Smilies.Add(@":+", "therethere");
Smilies.Add(@":P", "tongue_out");
EDIT:
Это в настоящее время работает, по большей части .. Хотя я думаю, что мой метод изменения смайликов в изображениях недостатки.
O:) => alt="O:)"
передает входящее в комплект поставки регулярное выражение, соответствующее соответствию и заменяет как alt="O:)" => alt="Oalt=":)""
.
Возможно, я ошибаюсь?
foreach (string smiley in Smilies.Keys)
{
string s = Smilies[smiley].ToString();
string pattern = @"(?<!(=""))" + Regex.Escape(smiley) + @"(?<!(""))";
string rep = @"«img src=""" + path + @"\images\" + s + @".gif"" alt=""" + smiley + @"""/»";
Regex re = new Regex(pattern);
if (re.IsMatch(msg))
{
Trace.WriteLine("Got a match!");
string m2 = re.Replace(msg, rep);
msg = m2;
}
}
Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –
Почему вы хотите использовать регулярное выражение? –
Поскольку, насколько мне известно, String.Replace не позволит мне устанавливать условные обозначения, такие как: Если совпадение окружено кавычками, пропустите. – MisterNad