Я использую регулярное выражение в своем коде С#, которое соответствует некоторым URL-адресам контента, используя Regex.Replace. Я думаю, что у меня есть шаблон, который мне нужен, чтобы он соответствовал правильно. Я использую синтаксис значения группы «$ 1» для создания новой строки. Проблема в том, что мне нужно UrlEncode значение, предоставленное «$ 1». Нужно ли мне перебирать коллекцию совпадений или я все еще могу использовать Regex.Replace? Спасибо за вашу помощь.
Regex regex = new Regex(@"src=""(.+?/servlet/image.+?)""");
// value of $1 needs to be Url Encoded!
string replacement = @"src=""/relative/image.ashx?imageUrl=$1""";
string text1 = @"src=""http://www.domain1.com/servlet/image?id=abc""";
string text2 = @"src=""http://www2.domain2.com/servlet/image?id2=123""";
text1 = regex.Replace(text1, replacement);
/*
text1 output:
src="/relative/image.ashx?imageUrl=http://www.domain1.com/servlet/image?id=abc"
imageUrl param above needs to be url encoded
*/
text2 = regex.Replace(text2, replacement);
/*
text2 output:
src="/relative/image.ashx?imageUrl=http://www2.domain2.com/servlet/image?id2=123"
imageUrl param above needs to be url encoded
*/