it-swarm.com.de

Array ohne Klammern und Kommas drucken

Ich porte ein Hangman-Spiel auf Android und habe ein paar Probleme gefunden. Das ursprüngliche Java-Programm hat die Konsole verwendet. Jetzt muss ich die Ausgabe irgendwie verschönern, damit sie zu meinem Android-Layout passt.

Wie drucke ich ein Array ohne Klammern und Kommas? Das Array enthält Schrägstriche und wird nach und nach 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 das Array einfach als eine String ausdrucken.

Ich fülle das Array mit diesem Code:

List<String> publicArray = new ArrayList<>();

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

Und ich drucke es so aus:

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

Jede Hilfe wäre dankbar.

31
SQDK

Verwenden Sie ArrayList.toString() grundsätzlich nicht - bauen Sie die Zeichenfolge selbst auf. Zum Beispiel:

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

(Persönlich würde ich die Variable publicArray nicht nennen, wenn es übrigens kein Array ist.)

46
Jon Skeet

Ersetzen Sie die Klammern und Kommas durch Leerzeichen.

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
89
user489041

Sie können die Methode join von Android.text.TextUtils class wie folgt verwenden:

TextUtils.join("",array);
18
icastell

zuerst

StringUtils.join(array, "");

zweite

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

BEARBEITEN

wahrscheinlich die beste: Arrays.toString(arr)

15
AlexR

Mit Java 8 oder neuer können Sie String.join verwenden, der die gleiche Funktionalität bietet:

Gibt einen neuen String zurück, der aus Kopien der CharSequence-Elemente besteht, die mit einer Kopie des angegebenen Trennzeichens verbunden sind

String[] array = new String[] { "a", "n", "d", "r", "o", "i", "d" };
String joined = String.join("", array); //returns "Android"

Bei einem Array eines anderen Typs sollte man es in ein String-Array oder in eine Char-Sequenz Iterable konvertieren:

int[] numbers = { 1, 2, 3, 4, 5, 6, 7 };

//both of the following return "1234567"
String joinedNumbers = String.join("",
        Arrays.stream(numbers).mapToObj(String::valueOf).toArray(n -> new String[n]));
String joinedNumbers2 = String.join("",
        Arrays.stream(numbers).mapToObj(String::valueOf).collect(Collectors.toList()));

Das erste Argument für String.join ist das Trennzeichen und kann entsprechend geändert werden.

4
ernest_k

Wenn Sie Java8 oder höher verwenden, können Sie stream () mit native verwenden.

publicArray.stream()
        .map(Object::toString)
        .collect(Collectors.joining(" "));

Verweise

4
Namo

die einfachste Lösung zum Entfernen der Halterungen ist 

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

2.use StringSubstring (1, strLen-1) (wobei strLen die Länge des Strings nach der Konvertierung aus der Arrayliste ist). 

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

hoffe das ist nützlich ... :-)

4
David

Ich habe join () verwendet, wie:

i=new Array("Hi", "Hello", "Cheers", "Greetings");
i=i.join("");

Welche Drucke:
HiHelloCheersGreetings


Weitere Informationen: Javascript Join - Verwenden Sie Join, um ein Array zu einem String in Javascript zu machen.

1
jazkat

Ich habe Arrays.toString (array_name) .replace ("[", ""). Replace ("]", ""). Replace (",", ""); Verwendet, wie ich gesehen habe Ich habe es aus einigen der obigen Kommentare, aber ich habe auch ein zusätzliches Leerzeichen nach dem Komma eingefügt (das Teil .replace (",", "") ), weil ich währenddessen jeden Wert in einer neuen Zeile ausgedruckt habe Es gab immer noch das Leerzeichen Verschieben der Wörter. Es hat mein Problem gelöst.

0