Considere la necesidad de encontrar un par de caracteres coincidentes, y eliminar los caracteres entre ellos, , así como esos caracteres/delimitadores.Eliminar delimitadores intermedios de texto en una cadena (utilizando una expresión regular?)
Éstos son los juegos de delimitadores:
[] square brackets
() parentheses
"" double quotes
'' single quotes
Aquí están algunos ejemplos de cadenas que deben coincidir:
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
y algunos ejemplos de cadenas que no deben coincidir:
Does Not Match:
------------------
Hello "world
Brown]co[w
Cheese'factory
Si la cadena dada no contiene un conjunto coincidente de delimitadores, no se modifica. La cadena de entrada puede tener muchos pares coincidentes de delimitadores. Si un conjunto de 2 delimitadores se superponen (es decir, he[llo "worl]d"
), sería un caso marginal que podemos ignorar aquí.
El algoritmo sería algo como esto:
string myInput = "Give [Me Some] Purple (And More) Elephants";
string pattern; //some pattern
string output = Regex.Replace(myInput, pattern, string.Empty);
Pregunta: ¿Cómo lograrlo con C#? Me estoy inclinando hacia una expresión regular.
Bonificación: ¿Hay formas fáciles de combinar esos delimitadores de inicio y final en constantes o en una lista de algún tipo? La solución que estoy buscando sería fácil de cambiar los delimitadores en caso de que los analistas de negocios obtengan nuevos conjuntos de delimitadores.
Esto funcionaría ahora (lo más probable) esperado para "Dar [Me Some] Purple (Y más) [Big] Elephants". Esto se puede resolver usando '. *?' en lugar de '. *' en la expresión proporcionada anteriormente. – mayu