2011-09-30 17 views
41

que tienen una cadena "4,6,8 \ n9,4"Separar una cadena basada en carbón múltiples delimitadores

Quiero dividir esta basado en, y \ n

matriz de salida debe ser

4 
6 
8 
9 
4 

Editar:

Ahora estoy leyendo cadena desde la consola, cuando entro en una cadena como anteriormente en la consola, en el código detrás me sale como "4,6,8\\n9,4". Ahora que quiero dividirme usando "," and "\\n". ¿Cómo puedo cambiar la expresión?

+0

mira 'string.Split'. – carlosfigueira

Respuesta

84

Uso string.Split(char [])

string strings = "4,6,8\n9,4"; 
string [] split = strings .Split(new Char [] {',' , '\n' }); 

EDITAR

trate de seguir si se obtiene ningún artículo vacíos innecesarios. String.Split Method (String[], StringSplitOptions)

string [] split = strings .Split(new Char [] {',' , '\n' }, 
           StringSplitOptions.RemoveEmptyEntries); 

Edit2

Esto funciona para su pregunta actualizada. Agregue todos los caracteres divididos necesarios al char [].

string [] split = strings.Split(new Char[] { ',', '\\', '\n' }, 
           StringSplitOptions.RemoveEmptyEntries); 
+0

No pude hacer que esto funcione con '.Split (nuevo Char [] {'? ='})', Pero al hacerlo ayudó http://stackoverflow.com/questions/1126915/how-do-i-split- a-string-by-a-multi-character-delimiter-in-c. Gran respuesta, no obstante, – CSharper

+1

@CSharper Lo estás haciendo mal. Debería hacer '.Split (nuevo Char [] {'?', '='})' – zdimension

+0

¿Hay alguna manera de saber qué carácter de la matriz se utilizó para dividir la cadena? (suponiendo que necesita saber este valor?) –

5
var s = "4,6,8\n9,4"; 
var split = s.Split(new char[]{',', '\n'}); 

Pero esto tiene que ser una víctima ...

EDITAR: Abordar el comentario.

este código:

static void Main(string[] args) 
{ 
    var s = "4,6,8\n9,4"; 

    foreach (var a in s.Split(new char[] { ',', '\n' })) 
     System.Diagnostics.Debug.WriteLine(a); 
} 

Muestra esto:

4 
6 
8 
9 
4 

EDITAR: Lectura entrada de la consola es diferente. \n es diferente cuando se ingresa manualmente.

static void Main(string[] args) 
{ 
    var s = "4,6,8\\n9,4"; 

    foreach (var a in s.Split(new string[] { ",", "\\n" }, StringSplitOptions.RemoveEmptyEntries)) 
     System.Diagnostics.Debug.WriteLine(a); 
} 
+0

¿Puedes tener una pieza editada? –

2

¿Puede usted hacer un String.Replace ('\ n', '') seguido por el string.split ('')?

4
string tosplit = "4,6,8\n9,4"; 
var split = tosplit.Split(new Char [] {',', '\n' }); 

En caso de que no se está imprimiendo/ver correctamente:

split.ToList().ForEach(Console.WriteLine); 
+0

me da 4 6 8 \\ n9 4 –

+0

@Nithesh Hebri - Da el resultado correcto que desea, para mí. – manojlds

5

Otra opción es utilizar Regex.Split. Esto es útil cuando las secuencias de división son más complejas.Por ejemplo, si los espacios también pueden ser parte de los delimitadores de división como:

"4,6,8 , 9\\n\\n4" 

continuación:

using System.Text.RegularExpressions; 
var i = "4,6,8 , 9\n\n4"; 
var o = Regex.Split(i, @"[,\s\n]+"); 
// now o is: 
// new string[] { "4", "6", "8", "9" } 

Tenga en cuenta que la expresión regular utilizada es "más tolerante" - se hizo caso omiso del "espacio" vacío entre los \ ns y aceptaría "4 6 8 9 4" de la misma manera, por lo que lo anterior para mostrar un punto: hay más de una manera de despellejar a un gato.

Happy coding.

Cuestiones relacionadas