Należy rozważyć wymóg znalezienia dopasowanej pary zestawów znaków i usunąć między nimi znaki, , a także te znaki/ograniczniki.Usunąć tekst pomiędzy ogranicznikami w ciągu znaków (używając wyrażenia regularnego?)
Oto zestawy ograniczniki:
[] square brackets
() parentheses
"" double quotes
'' single quotes
Oto niektóre przykłady łańcuchów, które powinny pasować:
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
Oraz kilka przykładów ciągów, które nie powinny pasować:
Does Not Match:
------------------
Hello "world
Brown]co[w
Cheese'factory
Jeśli podany ciąg nie zawiera pasującego zestawu ograniczników, nie zostanie zmodyfikowany. Ciąg wejściowy może zawierać wiele pasujących par ograniczników. Jeśli zestaw 2 ograniczników nakłada się (tj. he[llo "worl]d"
), byłby to przypadek skrajny, który możemy zignorować tutaj.
Algorytm będzie wyglądać mniej więcej tak:
string myInput = "Give [Me Some] Purple (And More) Elephants";
string pattern; //some pattern
string output = Regex.Replace(myInput, pattern, string.Empty);
Pytanie: W jaki sposób można to osiągnąć z C#? Jestem skłonny do regex.
Bonus: Czy istnieją proste sposoby na dopasowanie ograniczników początkowych i końcowych do stałych lub na jakiejś liście? Rozwiązanie, którego szukam, byłoby łatwe do zmiany ograniczników na wypadek, gdyby analitycy biznesowi wymyślili nowe zestawy ograniczników.
To będzie teraz działało jako (najprawdopodobniej) oczekiwane dla "Give [Me Some] Purple (i więcej) [Big] Elephants". Można to rozwiązać, używając ". *?" zamiast ". *" w wyrażeniu podanym powyżej. – mayu