Рассмотрим требование найти подходящую пару наборов символов и удалить любые символы между ними, и эти символы / разделители.
Вот наборы разделителей:
[] 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);
Вопрос: Как бы вы достигли этого с C #? Я склоняюсь к регулярному выражению.
Бонус: Существуют ли простые способы сопоставления начального и конечного разделителей в константах или в каком-либо списке? Решение, которое я ищу, будет легко изменить разделители, если бизнес-аналитики придумают новые наборы разделителей.