see remarks example cref c# string split

remarks - see cref c#



Cadena manual dividida en C# (5)

En el caso actual puedes usar Split con espacio extra como

string.Split(" - ")

En términos de "buenas prácticas" no puedo recomendar esta solución.

En mi código, estoy intentando manipular una cadena:

Some text - 04.09.1996 - 40-18

Me gustaría dividir esto en tres subcadenas: Some text , 40-18 y 40-18 .

Cuando uso el método de Split con un guión como separador, el valor de retorno es una matriz de cuatro cadenas: Some text , 04.09.1996 , 40 y 18 . ¿Cómo puedo hacer que este código funcione como se describe arriba?

Gracias.


Me preocuparía que "-" o "-" apareciera en "algún texto", ya que asumo que está interesado en eso como titular de lugar. Si está seguro de que "algún texto" no contendrá "-", las respuestas aquí son buenas, sencillas y legibles. De lo contrario, necesitamos confiar en algo que sabemos que es constante acerca de la cadena. A mi me parece que lo que es constante son los últimos 3 guiones. Así que trataría de dividir en "-" y volvería a juntar el último par como

string input = "Some text - 04.09.1996 - 40-18"; string[] foo = input.Split(new[] { " - " }, StringSplitOptions.RemoveEmptyEntries); int length = foo.Length; string[] bar = new string[3]; //put "some text" back together for(int i=0; i< length - 3;i++) { bar[0] += foo[i]; } bar[1] = foo[length - 3]; bar[2] = foo[length - 2] + "-" + foo[length - 1];


Me reemplazaron la secuencia de caracteres ''--------------------'' en su cadena al carácter especial "&" como a continuación. y luego dividir usando el carácter especial "&"

string str = "Hello, my- name -------------------- is Philip J. Fry -------------------- and i like cartoons".Replace("--------------------","&"); string[] ss=str.Split(''&''); string result=ss[0] + "," + ss[1]+ "," +ss[2];

luego la cadena de salida se parece a "Hola, mi nombre, es Philip J. Fry, y me gustan los dibujos animados"


Solo debes dividir con espacios alrededor de:

.Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries);

Ver demo de C #

var res = "Some text - 04.09.1996 - 40-18".Split(new[] {" - "}, StringSplitOptions.RemoveEmptyEntries); foreach (var s in res) Console.WriteLine(s);

Resultado:

Some text 04.09.1996 40-18


Use esta sobrecarga de división de cadenas para obtener solo 3 partes:

var s = "Some text - 04.09.1996 - 40-18"; var parts = s.Split(new[] { ''-'' }, 3);

Supongo que usted también quiere recortar los espacios también:

var parts = s.Split(new[] { ''-'' }, 3) .Select(p => p.Trim());