web-dev-qa-db-fra.com

Imprimer un tableau sans crochets ni crochets

Je porte un jeu du pendu sur Android et j'ai rencontré quelques problèmes. Le programme Java original utilisait la console. Il est donc temps d’embellir la sortie pour l’adapter à ma présentation Android.

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

J'utilise la fonction .toString() habituelle de la classe ArrayList et ma sortie est formatée comme suit: [ a, n, d, r, o, i, d ]. Je veux simplement qu'il affiche le tableau sous la forme d'une seule variable String.

Je remplis le tableau en utilisant ce morceau 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.

31
SQDK

En gros, 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, au fait.)

46
Jon Skeet

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

Vous pouvez utiliser la méthode join à partir de Android.text.TextUtils class comme:

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

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 réunis 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 de type différent, convertissez-le en tableau de chaînes ou en séquence de caractères Iterable:

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.

4
ernest_k

Si vous utilisez Java8 ou une version ultérieure, vous pouvez utiliser stream () avec native.

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

Références

4
Namo

la solution la plus simple pour enlever les crochets est, 

1.convertissez l'arraylist en chaîne avec la méthode .toString (). 

2.Utilisez String.substring (1, strLen-1). (StrLen est la longueur de la chaîne après la conversion d'arraylist). 

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

espérons que cela soit utile ... :-)

4
David

J'ai utilisé join () comme:

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

Quelles impressions:
HiHelloCheersGreetings


Voir plus: Javascript Join - Utilisez Join pour transformer un tableau en chaîne en Javascript

1
jazkat

J'ai utilisé Arrays.toString (nom_ array) .replace ("[", ""). Replace ("]", ""). Replace (",", ""); Comme j'ai vu à partir de certains des commentaires ci-dessus, mais aussi j’ai ajouté un espace après la virgule (la partie .replace (",", "") ), car pendant l’impression de chaque valeur dans une nouvelle ligne , il y avait toujours le caractère espace décalant les mots. Cela a résolu mon problème.

0
Marko Panushkovski