Как с помощью регулярных выражений заменить все повторения заданной подстроки на один символ - C#
Формулировка задачи:
Разбираюсь с этой темой. Про метасимволы и т.д. уже почитала, но хочется прочесть о стандартных (канонических) задачах и решениях. Нигде не могу найти полноценный разбор этой темы. Везде 2-3 примерами ограничиваются.
Например, как с помощью регулярных выражений заменить все повторения подряд данной подстроки sub на ровно один символ c в строке s?
Например,
s = "ЛетоЛетоAхЛето!" sub = "Лето" c = " " Результат: "Ах!" (ну это после Trim - кстати, а можно регулярным выражением заменить Trim? )
Как поменять регистр всех букв на противоположный с помощью регулярных выражений?
Решение задачи: «Как с помощью регулярных выражений заменить все повторения заданной подстроки на один символ»
textual
Листинг программы
namespace Ghost
{
using System;
using System.Linq;
using System.Text.RegularExpressions;
class Program
{
static string InverseCase(Match m)
{
if (m.Value.All(char.IsLower))
{
return m.Value.ToUpper();
}
if (m.Value.All(char.IsUpper))
{
return m.Value.ToLower();
}
return m.Value;
}
static void Main(string[] args)
{
string s = "ПлОхаЯ стрОКА";
string result = Regex.Replace(s, "\\w", new MatchEvaluator(InverseCase));
Console.WriteLine(result);
}
}
}