Algo así como: How to split String with some separator but without removing that separator in Java?Dividir una cuerda por un espacio sin quitar el espacio?
necesito tomar "Hello World" y obtener [ "Hola", "", "mundo"]
Algo así como: How to split String with some separator but without removing that separator in Java?Dividir una cuerda por un espacio sin quitar el espacio?
necesito tomar "Hello World" y obtener [ "Hola", "", "mundo"]
Se puede utilizar una expresión regular, aunque probablemente es una exageración:
StringCollection resultList = new StringCollection();
Regex regexObj = new Regex(@"(?:\b\w+\b|\s)");
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success) {
resultList.Add(matchResult.Value);
matchResult = matchResult.NextMatch();
}
Si se divide solo en el límite de palabras, obtendrá algo muy parecido a lo que pregunta.
string[] arr = Regex.Split("A quick brown fox.", "\\b");
arr [] = { "", "A", "", "rápido", "", "marrón", "", "zorro", "" }
Excepto que 'string.Split()' no funciona con expresiones regulares. – svick
Sí, vi la referencia a Java en la primera línea de la descripción y pasé por alto que había una etiqueta para C#. – phatfingers
Revisé el código de ejemplo para escribir en C#. Los resultados de la matriz son iguales. – phatfingers
Puede usar Regex.Split()
para esto. Si encierra el patrón en la captura de paréntesis, que se incluirá en el resultado también:
Regex.Split("Hello World", "()")
le da exactamente lo que quería.
+1 para la solución elegante. Por qué no marcó su respuesta como la correcta ... –
¿Por qué? ¿Por qué no puedes simplemente asumir que hay un espacio entre cada dos elementos? – SLaks
¿Por qué exactamente? Usted sabe que el separador es un espacio, por lo que para cada elemento de la matriz resultante habría habido un espacio entre los elementos contiguos. Si usas string.Join() puedes volver a poner el espacio. Estoy desconcertado sobre por qué lo necesitas en los resultados de división. – slugster
¿Qué quieres de nuevo si hola y mundo estuvieran separados por más de un espacio? –