2010-12-08 9 views
21

Ich habe bereits ein Hangman-Spiel für meine Java-Klasse in der Schule geschrieben. Ich portiere es jetzt auf Android und habe ein paar Probleme gefunden. Das ursprüngliche Java-Programm schrieb alle Ausgaben auf die Konsole. Jetzt muss ich die Ausgabe irgendwie anpassen, damit sie zu dem Layout passt, das ich entworfen habe.Drucken Array ohne Klammern und Kommata

Wie drucke ich ein Array ohne Klammern und Kommas? Das Array enthält Schrägstriche und wird einzeln ersetzt, wenn der richtige Buchstabe erraten wird.

Ich verwende die übliche .toString() - Funktion der ArrayList-Klasse und meine Ausgabe ist wie folgt formatiert: [a, n, d, r, o, i, d]. Ich möchte, dass es das Array einfach als eine einzige Zeichenfolge ausgibt.

Dieses Problem scheint so einfach, obwohl ich keine Lösung gefunden habe. Nicht mit der Suchfunktion.

fülle ich das Array dieses Stück Code verwendet:

for(int i = 0;i<secretWordLength;i++){ 
     hiddenArray.add(secretWord.substring(i,i+1)); 
     publicArray.add("-"); 
    } 

Und ich es wie folgt drucken:

final TextView currentWordView = (TextView) findViewById(R.id.CurrentWord); 
    currentWordView.setText(publicArray.toString()); 

Jede Hilfe

geschätzt würde
+2

Die Methode toString() auf der Liste Schnittstelle ist wirklich nur für das Debugging und Protokollierung gemeint. Sie sollten es nicht verwenden, um die Ausgabe für den Benutzer darzustellen. –

Antwort

33

Grundsätzlich nicht verwenden ArrayList.toString() - bauen Sie die Schnur für sich selbst auf. Zum Beispiel:

StringBuilder builder = new StringBuilder(); 
for (String value : publicArray) { 
    builder.append(value); 
} 
String text = builder.toString(); 

(persönlich würde ich nicht die variable publicArray nennen, wenn sie nicht tatsächlich ein Array ist, übrigens.)

+0

Danke das war genau was ich suchte. Ich wusste, es war einfach. Vielen Dank! – SQDK

8

ersten

StringUtils.join(array, "");

zweiten

Arrays.asList(arr).toString().substring(1).replaceFirst("]", "").replace(", ", "")

EDIT

wahrscheinlich die besten: Arrays.toString(arr)

+1

Die StringUtils sind meiner Meinung nach die sauberere Option. +1 – Faliorn

76

die Klammern und Kommata mit leeren Raum ersetzen.

String formattedString = myArrayList.toString() 
    .replace(",", "") //remove the commas 
    .replace("[", "") //remove the right bracket 
    .replace("]", "") //remove the left bracket 
    .trim();   //remove trailing spaces from partially initialized arrays 
+0

Der Aufruf der Methode replace für die rechte Klammer enthält fälschlicherweise die linke Klammer. Aber sonst wird es funktionieren. –

+0

das funktioniert gut Vielen Dank – prasanthMurugan

+0

Es ist eine gute Lösung – Sampad

3

die einfachste Lösung, um die Klammern zu entfernen ist,

1. Konvertieren Sie die Arraylist mit der .toString() - Methode in einen String.

2.use Stringstring (1, strLen-1). (Dabei ist strLen die Länge der Zeichenfolge nach der Konvertierung aus der Arraylist).

3.Hurraaah ..Die Ergebniszeichenfolge ist Ihre Zeichenfolge mit entfernten Klammern.

Hoffnung dies nützlich ... :-)

17

können Sie Methode beitreten verwenden von android.text.TextUtils Klasse wie:

TextUtils.join("",array); 
+1

Dies ist der beste Weg für einen Android Kontext. Schnell und einfach. – wendigo

+0

TextUtils nimmt auch Iterable –

+0

@icastell du bist ein Rockstar! Vielen Dank – GraSim

-1

einfach ein String Objekt mit Ihrem Array initialisieren

String s=new String(array); 
Verwandte Themen