2017-12-24 17 views
0

Wie eine Zeichenfolge wie diese abzustreifen:Java-Streifen/Entfernen mehrere Wörter aus einer Zeichenkette

String a = "ItemStack{DIAMOND_HELMET x 1,UNSPECIFIC_META:{meta-type=UNSPECIFIC, display-name=PRO, repair-cost=1}}" 

ich so etwas wie

"Diamond_HELMET 1 UNSPECIFIC PRO" 

Die Methoden, die ich versucht habe bekommen wollen, ist nur ein paar zu ersetzen von Strings, aber es ist ein Schmerz in der *** und sieht schrecklich aus. Ich frage mich nur, ob jemand eine bessere Lösung/Option hat. Leider vergaß meinen eigenen Code hinzuzufügen:/

String itemStackStringName = "ItemStack{DIAMOND_HELMET x 1, UNSPECIFIC_META:{meta-type=UNSPECIFIC, display-name=PRO, repair-cost=1}}"; 
    String getItemStacks = itemStackStringName.replace("ItemStack","") 
      .replace("{","").replace("}", "").replace("UNSPECIFIC_META:", "") 
      .replace("display-name", "").replace("=","") 
      .replace("meta-type", "").replace("repair-cost1", "") 
      .replace("x", "").replace(",",""); 

    System.out.println(getItemStacks); 
    "DIAMOND_HELMET 1 UNSPECIFIC PRO" 

Es funktioniert, aber es ist nur ein großes Durcheinander.

+1

Aus Ihrer Frage und Beispiel ist es schwierig, ein Muster abzuleiten, die verwendet werden könnten, um die Worte zu extrahieren. Bitte verbessern Sie Ihre Frage. –

+0

Regex wäre wahrscheinlich dein bester Freund. Aber wie gesagt, ohne Ihren Code ist es schwierig, eine adäquate Lösung zu finden. – arkdevelopment

+1

@dasblinkenlicht Code hinzugefügt – Shnatta

Antwort

1

Wenn Sie wissen, das ist die Art Saiten sein werden, können Sie voran gehen und etwas tun, wie folgt aus:

String arr[] = a.split("\\{");//you get an array of 3 strings 
String someFinalString = arr[1].split("x")[0].trim();//you get "DIAMOND_HELMET" 
someFinalString += arr[1].split("x")[1].split(",")[0]; 
arr = arr[2].split("\\=");//you get an array of 4 strings 
someFinalString += " " + arr[1].split(",")[0] + " " + arr[2].split(",")[0]; 

In Zukunft bitte posten, was Sie zu tun versucht. So etwas zu teilen wird immer schrecklich aussehen. Sie können es später immer präziser machen.

Nur ein Beweis das funktioniert (und Sie können selbst herausfinden, wie Klein zu bekommen glaube ich): DrJava for simplicity

+0

String arr [] = a.split ("\\ {"); Was macht das genau? – Shnatta

+0

String arr [] erstellt ein Null-String-Array. a.split ("\\ {") teilt a in Strings dividiert durch das Zeichen (hier ist es {). Für Klammern, das Gleichheitszeichen und die anderen Sonderzeichen, die von Java verwendet werden, müssen Sie ("\\ SPECIALCHAR") verwenden, wie ich es mit {od = getan habe, aber wenn Sie durch etwas anderes teilen, wie ein Komma (", ") Sie müssen nicht" \ "verwenden. Also, im Grunde, spaltete es die Saiten in drei Saiten, die wie folgt aussah: "ItemStack" "DIAMOND_HELMET x 1, UNSPECIFIC_META:" „meta-type = unspezifisch, display-name = PRO, Reparatur-Kosten = 1 }} " Sie sehen also, der ursprüngliche String wurde in 3 getrennt, durch die {. – SkyAnthrax94

+0

Ohhh ich sehe danke :) – Shnatta

Verwandte Themen