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.
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.)
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 joindre méthode de android.texte.TextUtils classe comme:
TextUtils.join("",array);
Premier
StringUtils.join(array, "");
Deuxième
Arrays.asList(arr).toString().substring(1).replaceFirst("]", "").replace(", ", "")
Modifier
Probablement le meilleur: Arrays.toString(arr)
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...:-)
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
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.
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
Initialisez simplement un objet String
avec votre tableau
String s=new String(array);