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.
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.)
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
Vous pouvez utiliser la méthode join à partir de Android.text.TextUtils class comme:
TextUtils.join("",array);
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.
Si vous utilisez Java8 ou une version ultérieure, vous pouvez utiliser stream () avec native.
publicArray.stream()
.map(Object::toString)
.collect(Collectors.joining(" "));
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 ... :-)
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
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.