2016-10-09 6 views
-3

Wie kann ich Attribute Werte aus dem String-Parameter extrahieren?Java-Konstruktor mit String-Parametern

public class Pays{ 
public Pays(String paysDescriptions) { 
     //implementation 
    } 

} 
pays= new Pays("p1:Europe:France, p2:Amerique:Canada"); 

Edit:

Ich habe eine Antwort in den Menschen, die nie diese Art von Konstruktor verwendet haben (wie ich: p) und die einige Erklärungen benötigen.

+1

Sie sind nur mit einem Komma in der Zeichenfolge verwechselt. Es ist eine einzelne Zeichenkette, die in einer Menge von Anführungszeichen eingeschlossen ist, daher ein einzelner Parameter für Ihren Konstruktor. –

+0

Was genau verstehst du nicht? Sie erstellen ein neues 'Pays'-Objekt mit einem String-Parameter' paysDescriptions '=' "p1: Europa: Frankreich, p2: Amerique: Kanada" ' –

+0

@MadMatts danke für Ihren Kommentar .. Ich kann nicht verstehen, wie ich kann Zugang zu zahlt Attribute..Ich habe testCase und ich sollte die Klassenimplementierung erstellen – Akino

Antwort

1

Sie sollten versuchen, String.split(String regex) API zu verwenden.

  1. den Parameter Pause paysDescriptions Komma (,) als regex, dann
  2. die einzelnen Positionen brechen Doppelpunkt (:) als regex

Beispiel:

public Pays(String paysDescriptions) { 
    String[] split_1 = paysDescriptions.split(","); 
    for (String split : split_1) { 
     String[] split_2 = split.split(":"); 
     for (String sp : split_2) { 
      System.out.println(sp); // use sp.trim() if spaces after comma 
            // not required. 
     } 
    } 
} 
+0

danke für deine Antwort es war genau das, was ich gemacht habe .. Ich habe eine HashMap benutzt. – Akino

+0

Ich bin froh, dass Sie es nützlich fanden. Bitte akzeptieren Sie eine Antwort, damit die Frage nicht im offenen Zustand erscheint. –

0

Ich verstehe die Logik falsch, weil es die fi ist Zum ersten Mal sah ich diese Art von Konstrukteur. Ich habe nur die Unit-Test-Klasse und ich sollte den Code für die Source implementieren. Also habe ich eine Map<String,String[]> verwendet, um Parameter zu teilen, und dann kann ich auf die verschiedenen Attribute meiner Klasse zugreifen.

Map<String, String[]> paysMap = new HashMap<String, String[]>(); 
    public Pays(String paysDescriptions) { 

     String s = paysDescriptions; 
     String[] pairs = s.split(","); 
     for (int i=0;i<pairs.length;i++) { 
      String pair = pairs[i]; 
      String[] keyValue = pair.split(":"); 
      paysMap.put(String.valueOf(keyValue[0]),new String[] {String.valueOf(keyValue[1]), String.valueOf(keyValue[2])}); 

     } 
    }