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());