una ultimos ultimo recortar quitar obtener los ejemplos caracteres caracter cadena buscar c# .net string string-parsing

c# - ultimos - ¿Cómo extraigo una subcadena de una cadena hasta que se encuentra el segundo espacio?



split c# ejemplos (13)

:PAG

Solo una nota, creo que la mayoría de los algoritmos aquí no verifican si tiene 2 o más espacios juntos, por lo que podría tener un espacio como la segunda palabra.

No sé si es la mejor manera, pero me divertí un poco al escribirlo: P (lo bueno es que te permite elegir la cantidad de espacios / palabras que quieres tomar)

var text = "a sdasdf ad a"; int numSpaces = 2; var result = text.TakeWhile(c => { if (c=='' '') numSpaces--; if (numSpaces <= 0) return false; return true; }); text = new string(result.ToArray());

También obtuve la respuesta de @ho y la convertí en un ciclo para que pudiera usarla tantas veces como quiera: P

string str = "My Test String hello world"; int numberOfSpaces = 3; int index = str.IndexOf('' ''); while (--numberOfSpaces>0) { index = str.IndexOf('' '', index + 1); } string result = str.Substring(0, index);

Tengo una cuerda como esta:

"o1 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467"

¿Cómo "o1 1232.5467" sólo "o1 1232.5467" ?

El número de caracteres a extraer no siempre es el mismo. Por lo tanto, solo quiero extraer hasta que se encuentre el segundo espacio.


Algo como esto:

int i = str.IndexOf('' ''); i = str.IndexOf('' '', i + 1); return str.Substring(i);


Consigue la posición del primer espacio:

int space1 = theString.IndexOf('' '');

La posición del siguiente espacio después de eso:

int space2 = theString.IndexOf('' '', space1 + 1);

Obtenga la parte de la cadena hasta el segundo espacio:

string firstPart = theString.Substring(0, space2);

El código anterior se coloca en una sola línea:

string firstPart = theString.Substring(0, theString.IndexOf('' '', theString.IndexOf('' '') + 1));


Estaba pensando en este problema para mi propio código y aunque probablemente termine usando algo más simple / más rápido, aquí hay otra solución de Linq que es similar a la que agregó @Francisco.

Simplemente me gusta porque se parece más a lo que realmente quieres hacer: "Toma caracteres mientras que la subcadena resultante tiene menos de 2 espacios".

string input = "o1 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467"; var substring = input.TakeWhile((c0, index) => input.Substring(0, index + 1).Count(c => c == '' '') < 2); string result = new String(substring.ToArray());


Hay formas más cortas de hacerlo como lo han dicho otros, pero también puedes revisar cada personaje hasta que encuentres un segundo espacio y luego devolver la subcadena correspondiente.

static string Extract(string str) { bool end = false; int length = 0 ; foreach (char c in str) { if (c == '' '' && end == false) { end = true; } else if (c == '' '' && end == true) { break; } length++; } return str.Substring(0, length); }


Podrías intentar encontrar el indexOf "o1" primero. Luego extraerlo. Después de esto, divide la cadena usando los caracteres "1232.5467":

string test = "o1 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467"; string header = test.Substring(test.IndexOf("o1 "), "o1 ".Length); test = test.Substring("o1 ".Length, test.Length - "o1 ".Length); string[] content = test.Split('' '');


Recomendaría una expresión regular para esto, ya que maneja casos que quizás no hayas considerado.

var input = "o1 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467"; var regex = new Regex(@"^(.*? .*?) "); var match = regex.Match(input); if (match.Success) { Console.WriteLine(string.Format("''{0}''", match.Groups[1].Value)); }


Solo usa String.IndexOf dos veces como en:

string str = "My Test String"; int index = str.IndexOf('' ''); index = str.IndexOf('' '', index + 1); string result = str.Substring(0, index);


Un enfoque directo sería el siguiente:

string[] tokens = str.Split('' ''); string retVal = tokens[0] + " " + tokens[1];


Utilice un regex:.

Match m = Regex.Match(text, @"(.+? .+?) "); if (m.Success) { do_something_with(m.Groups[1].Value); }


string testString = "o1 1232.5467 1232.5467........."; string secondItem = testString.Split(new char[]{'' ''}, 3)[1];


string[] parts = myString.Split(" "); string whatIWant = parts[0] + " "+ parts[1];


s.Substring(0, s.IndexOf(" ", s.IndexOf(" ") + 1))