Рассмотрим требование найти совпадающую пару наборов символов и удалить любые символы между ними, а также те символы/разделители.
Вот наборы разделителей:
[] square brackets
() parentheses
"" double quotes
'' single quotes
Ниже приведены примеры строк, которые должны соответствовать:
Given: Results In:
-------------------------------------------
Hello "some" World Hello World
Give [Me Some] Purple Give Purple
Have Fifteen (Lunch Today) Have Fifteen
Have 'a good'day Have day
И некоторые примеры строк, которые не должны совпадать:
Does Not Match:
------------------
Hello "world
Brown]co[w
Cheese'factory
Если данная строка не содержит соответствующий набор разделителей, она не изменяется. Входная строка может содержать много совпадающих пар разделителей. Если набор из 2 разделителей перекрывается (т.е. he[llo "worl]d"
), это будет краевой случай, который мы можем здесь игнорировать.
Алгоритм будет выглядеть примерно так:
string myInput = "Give [Me Some] Purple (And More) Elephants";
string pattern; //some pattern
string output = Regex.Replace(myInput, pattern, string.Empty);
Вопрос: Как бы вы это сделали с С#? Я склоняюсь к регулярному выражению.
Бонус: Есть ли простые способы сопоставления этих разделителей начала и конца в константах или в некотором списке? Решение, которое я ищу, было бы легко изменить разделители, если бизнес-аналитики придумают новые наборы разделителей.