index array c# .net string indexof

array - split c#



Cómo obtener el índice de la segunda coma en una cadena (2)

Acabo de escribir este método de extensión, para que pueda obtener el enésimo índice de cualquier subcadena en una cadena

public static class Extensions { public static int IndexOfNth(this string str, string value, int nth = 1) { if (nth <= 0) throw new ArgumentException("Can not find the zeroth index of substring in string. Must start with 1"); int offset = str.IndexOf(value); for (int i = 1; i < nth; i++) { if (offset == -1) return -1; offset = str.IndexOf(value, offset + 1); } return offset; } }

Nota: En esta implementación, uso 1 = primero, en lugar de un índice basado en 0. Esto se puede cambiar fácilmente para usar 0 = primero, agregando un nth++; al principio, y cambiando el mensaje de error para mayor claridad.

Tengo una cadena en una matriz que contiene dos comas, así como tabulaciones y espacios en blanco. Estoy intentando cortar dos palabras en esa cadena, ambas antes de las comas, realmente no me importan las pestañas y los espacios en blanco.

Mi cadena se parece a esto:

String s = "Address1 Chicago, IL Address2 Detroit, MI"

Me sale el índice de la primera coma.

int x = s.IndexOf('','');

Y a partir de ahí, corté la cadena antes del índice de la primera coma.

firstCity = s.Substring(x-10, x).Trim() //trim white spaces before the letter C;

Entonces, ¿cómo obtengo el índice de la segunda coma para que pueda obtener mi segunda cadena?

¡Realmente aprecio tu ayuda!


Tienes que usar código como este.

int index = s.IndexOf('','', s.IndexOf('','') + 1);

Es posible que deba asegurarse de no ir fuera de los límites de la cadena. Te dejaré esa parte a ti.