Tableau d'impression sans crochets et virgules

Je porte un jeu Hangman sur Android et j'ai rencontré quelques problèmes. Le programme Java original a utilisé la console, alors maintenant je dois embellir la sortie pour qu'elle corresponde à ma mise en page Android.

Comment imprimer un tableau sans les crochets et les virgules? Le tableau contient des barres obliques et est remplacé un par un lorsque la lettre correcte est devinée.

J'utilise la fonction .toString() habituelle de la classe ArrayList et ma sortie est formatée comme: [ a, n, d, r, o, i, d ]. Je veux simplement l'imprimer le tableau comme un seul String.

Je remplis le tableau en utilisant ce bit de code:

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

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

Et je l'imprime comme ceci:

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

Toute aide serait appréciée.

28
demandé sur Radiodef 2010-12-08 18:57:38

9 réponses

Fondamentalement, n'utilisez pas ArrayList.toString() - Construisez la chaîne pour vous-même. Par exemple:

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

(personnellement, je n'appellerais pas la variable publicArray quand ce n'est pas réellement un tableau, en passant.)

40
répondu Jon Skeet 2010-12-08 16:00:50

Remplacez les crochets et les virgules par un espace vide.

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
82
répondu user489041 2017-03-06 05:54:34

Vous pouvez utiliser joindre méthode de android.texte.TextUtils classe comme:

TextUtils.join("",array);
18
répondu icastell 2013-05-23 15:50:41

Premier

StringUtils.join(array, "");

Deuxième

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

Modifier

Probablement le meilleur: Arrays.toString(arr)

10
répondu AlexR 2014-11-20 16:29:15

La solution La plus simple pour supprimer les crochets est,

1.convertir le arraylist en chaîne avec .la méthode toString ().

2.utilisez de la Ficelle.sous-chaîne (1, strLen-1).(où strLen est la longueur de la chaîne après la conversion de arraylist).

3.Hurraaah..la chaîne de résultat est votre chaîne avec les crochets supprimés.

J'espère que c'est utile...:-)

4
répondu David 2012-09-17 13:00:32

Si vous utilisez Java8 ou supérieur, vous pouvez utiliser avec stream () avec native.

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

Références

4
répondu Namo 2018-01-16 08:09:32

Avec Java 8 ou plus récent, vous pouvez utiliser String.join, qui fournit les mêmes fonctionnalités:

Renvoie une nouvelle chaîne composée de copies des éléments CharSequence jointes avec une copie du délimiteur spécifié

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

Avec un tableau d'un type différent, il faut le convertir en un tableau de chaîne ou en une séquence de caractères itérable:

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()));

Le premier argument de String.join est le délimiteur, et peut être modifié en conséquence.

3
répondu ernest_k 2018-07-18 15:50:29

J'ai utilisé la fonction join () comme:

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

Qui Imprime:
HiHelloCheersGreetings


Voir plus: JavaScript Join - utilisez Join pour créer un tableau dans une chaîne en Javascript

1
répondu jazkat 2011-09-16 07:54:20

Initialisez simplement un objet String avec votre tableau

String s=new String(array);
-3
répondu Ayush bhanu 2017-10-18 12:42:26