2014-03-26 6 views
17

Ich habe eine Zeichenfolge in einem Array, das zwei Kommas sowie Tabs und Leerzeichen enthält. Ich versuche, zwei Wörter in diese Zeichenfolge zu schneiden, beide vor den Kommas, mir sind die Tabs und Leerstellen egal.So erhalten Sie den Index des zweiten Kommas in einer Zeichenfolge

Mein String in etwa so aussieht:

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

ich den Index des ersten Komma

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

Und von dort, schneide ich die Zeichenfolge vor dem Index des ersten Komma.

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

Also, wie bekomme ich den Index des zweiten Kommas, damit ich meine zweite Zeichenfolge bekommen kann?

Ich schätze Ihre Hilfe sehr!

+0

Wird die Zeichenfolge immer 2 Kommas haben? –

+3

Sie möchten jetzt lernen, Regex zu lernen. – leppie

+5

Warum teilen Sie nicht (',') 'und dann alle Scheiben in einem Array? – balexandre

Antwort

48

Sie müssen Code wie folgt verwenden.

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

Sie müssen möglicherweise sicherstellen, dass Sie die Grenzen der Zeichenfolge jedoch nicht überschreiten. Ich werde diesen Teil dir überlassen.

+1

Danke so viel, es funktioniert perfekt – Sem0

19

Ich schrieb diese Erweiterung Methode, so dass Sie die n-te Index jeder Teilkette in einem String

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; 
    } 
} 

Hinweis bekommen: Bei dieser Implementierung verwenden I 1 = erste, anstelle eines 0 basierten Index.

+1

Vielen Dank, ich schätze Ihre Hilfe – Sem0