2016-03-24 12 views
-4

Einfache Szenario String Arrayliteral auf Array-Liste konvertieren, aber der Suche nach schwer zu beenden -Wie ohne Anführungszeichen

meine String -

String ipAdd =  "["2.2.2.2","1.1.1.1","6.6.6.6","4.4.4.4"]" 

ich alle Elemente in einer Array-Liste haben möchten. Wie kann ich das machen?

Ich versuche Mustererkennung für IP und alle, nicht funktioniert und mit Hilfe der Split-Funktion, enthält es Anführungszeichen und Klammer.

+3

Was meinen Sie ohne Zitate? 1.1.1.1 ist in Java nicht gültig. – Maroun

+0

Möchten Sie eine Saite wie '" 2.2.2.2.1.1.1.1,6.6.6.6.4.4.4.4 "'? – falsetru

+0

Dies ist bereits Array von Strings. Was genau willst du? – Guy

Antwort

0

Mit replaceAll() (Klammern entfernen) und split() (aufzuspalten basierend auf Komma) funktionieren sollte:

public static void main(String... args) throws Exception { 
    String ipAdd = "[\"2.2.2.2\",\"1.1.1.1\",\"6.6.6.6\",\"4.4.4.4\"]"; 
    List<String> list = Arrays.asList(ipAdd.replaceAll("\\[|\\]", "").split(",")); 
    for (String s : list){ 
     System.out.println(s); 
    } 

} 

O/P:

"2.2.2.2" 
"1.1.1.1" 
"6.6.6.6" 
"4.4.4.4" 
+1

Ja, ich dachte, es gäbe eine bessere Option, aber es würde reichen. Danke – AngryJS

-1

Der folgende Code vielleicht Ihre Anforderung erfüllen:

public static void main(String[] args) { 
    String st = "[\"2.2.2.2\",\"1.1.1.1\",\"6.6.6.6\",\"4.4.4.4\"]"; 

    String patternString1 = "(\\d\\.\\d\\.\\d\\.\\d)"; 

    Pattern pattern = Pattern.compile(patternString1); 
    Matcher matcher = pattern.matcher(st); 
    ArrayList<String> list = new ArrayList<>(); 
    while(matcher.find()) { 
     list.add(matcher.group(1)); 
    } 
    for (String item : list) { 
     System.out.println("" + item); 
    } 
} 

Sie reguläre Ausdrücke mit einfangenden Gruppen können die IP aus dem String zu extrahieren. (Siehe https://docs.oracle.com/javase/tutorial/essential/regex/groups.html)

+1

Bitte erklären Sie Ihre Antwort; Dumpingcode ist für Leser der Frage selten nützlich. –

+0

Habe es versucht aber es ist patternabhängig, wenn ich IP Ad 1.1.1.1.1.1.1 gebe. auch es wird es akzeptieren und an Matcher als 1.1.1.1, ich möchte genaue Zeichenfolge in der Liste hinzugefügt werden :( – AngryJS

+0

können Sie das Muster ändern: String patternString1 = "(\\ d (\\. \\ d) *) "; –

Verwandte Themen