2014-10-23 22 views
6

Ich lese in einer Datei in Java und möchte jede Zeile durch den Wert in Anführungszeichen teilen. Zum Beispiel würde eine Linie sein ...Aufteilen einer Zeichenfolge nach Wert zwischen Anführungszeichen in Java

"100", "dies ist", "a", "test"

ich das Array möchte aussehen ..

[0] = 100 
[1] = this, is 
[2] = a 
[3] = test 

Normalerweise bin ich durch Komma getrennt, aber da einige der Felder ein Komma enthalten (Position 1 im obigen Beispiel) ist es nicht wirklich geeignet.

Danke.

+0

Die String.split (String regex) Methode verwendet ein regulärer Ausdruck als Argument, also benutze einfach eine Regex, die mit "" etwas "übereinstimmt, nicht sicher von der zu p von meinem Kopf, aber jemand wird Ihnen die Antwort geben bald genug – Neilos

+0

entfernen ersten und letzten '" 'Zeichen und dann auf" "," ' – user902383

+0

ja ich bin ein wenig verwirrt über die Kommas in seinem Beispiel, ich habe nicht ' t see it 1st – Neilos

Antwort

2

können Sie die folgenden Aktionen

String yourString = "\"100\",\"this, is\",\"a\",\"test\""; 
    String[] array = yourString.split(",\""); 
    for(int i = 0;i<array.length;i++) 
     array[i] = array[i].replaceAll("\"", ""); 

Schließlich Array Variable, die die gewünschte Anordnung

ausgegeben wird:

100 
    this, is 
    a 
    test 
+0

Beendet mit dieser, arbeitete wie ein Charme!Danke an alle. – user3722194

2

Hier ist eine einfache Art und Weise:

String example = "\"test1, test2\",\"test3\""; 
int quote1, quote2 = -1; 
while((quote2 != example.length() - 1) && quote1 = example.indexOf("\"", quote2 + 1) != -1) { 
    quote2 = example.indexOf("\"", quote1 + 1); 
    String sub = example.substring(quote1 + 1, quote2); // will be the text in your quotes 
} 
+0

Mit einem aussagekräftigeren Namen als "a" und einem Beispiel String, so dass das Snippet lauffähig ist und damit Sie die Beispielausgabe bereitstellen können, wäre dies perfekt ;-) – LionC

2

Sie es die folgende Art und Weise aufteilen:

String input = "\"100\",\"this, is\",\"a\",\"test\""; 
for (String s:input.split("\"(,\")*")) { 
    System.out.println(s); 
} 

Ausgabe

100 
this, is 
a 
test 

Hinweis Die erste ar Strahlelement wird leer sein.

0

Schnell und schmutzig, aber funktioniert:

String s = "\"100\",\"this, is\",\"a\",\"test\""; 
    StringBuilder sb = new StringBuilder(s); 
    sb.deleteCharAt(0); 
    sb.deleteCharAt(sb.length()-1); 
    String [] buffer= sb.toString().split("\",\""); 
    for(String r : buffer) 
     System.out.println(r); code here 
+0

anstatt die Zeichenfolge in StringBuilder zu konvertieren, Sie können Teilstring-Methode auf String verwenden – user902383

+0

Ich dachte zwar, aber es war einfacher zu verstehen mit einer expliziten Methode wie 'deleteCharAt' – ortis

0

Hier ist ein Weg, um einen regulären Ausdruck verwenden.

public static void main (String[] args) { 
    String s = "\"100\",\"this, is\",\"a\",\"test\""; 
    String arr[] = s.split(Pattern.quote("\"\\w\""))); 
    System.out.println(Arrays.toString(arr)); 
} 

Ausgang:

["100","this, is","a","test"] 

Was sie tut, ist Spiele:

\" -> start by a " 
    \\w -> has a word character 
    \" -> finish by a " 

Ich weiß nicht, welche Art von Werten, die Sie haben, aber Sie können es ändern, wie Sie benötigen.

Verwandte Themen