2010-12-08 107 views
21

He escrito anteriormente un juego Hangman para mi clase de java en la escuela. Actualmente estoy transfiriéndolo a Android y he encontrado algunos problemas. El programa original de Java escribió todas las salidas a la consola. Ahora tengo que de alguna manera asegurar la salida para que se ajuste al diseño que he diseñado.Imprimir matriz sin corchetes y comas

¿Cómo imprimo una matriz sin los corchetes y las comas? La matriz contiene barras y se reemplaza una por una cuando se adivina la letra correcta.

Estoy usando la función usual .toString() de la clase ArrayList y mi salida está formateada como: [a, n, d, r, o, i, d]. Quiero que simplemente imprima la matriz como una sola cadena.

Este problema parece tan simple aunque no he podido encontrarle una solución. No usando la función de búsqueda tampoco.

que rellenar la matriz utilizando este fragmento de código:

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

Y lo imprimo así:

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

Cualquier ayuda se agradece

+2

El método toString() de la interfaz de lista es realmente sólo significó para depuración y registro. No debe usarlo para presentar la salida al usuario. –

Respuesta

33

Básicamente, no utilizan ArrayList.toString() - crea la cuerda por ti mismo. Por ejemplo:

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

(Personalmente yo no llamaría la variable publicArray cuando en realidad no es una matriz, por cierto.)

+0

Gracias fue exactamente lo que estaba buscando. Sabía que era simple. ¡Gracias! – SQDK

8

primera

StringUtils.join(array, "");

segundo

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

EDITAR

probablemente el mejor: Arrays.toString(arr)

+1

StringUtils es la opción más limpia en mi opinión. +1 – Faliorn

76

Reemplazar los soportes y comas con el espacio vacío.

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 
+0

La invocación del método de reemplazo para el corchete derecho contiene erróneamente el corchete izquierdo. Pero de lo contrario, funcionará. –

+0

esto funciona bien, muchas gracias – prasanthMurugan

+0

Es una buena solución – Sampad

3

la solución más simple para la eliminación de los corchetes es,

1. convierta el arraylist en cadena con el método .toString().

2.use String.substring (1, strLen-1). (Donde strLen es la longitud de la cadena después de la conversión de la lista de arrays).

3.Hurraaah ..la cadena resultante es su cadena con corchetes eliminados.

esperanza esto es útil ... :-)

17

Puede utilizar unen método de android.text.TextUtils clase como:

TextUtils.join("",array); 
+1

Esta es la mejor forma para un contexto de Android. Rapido y facil. – wendigo

+0

TextUtils toma Iterable también –

+0

@icastell eres un rockstar! Gracias – GraSim

-1

Sólo inicializar un objeto String con su gama

String s=new String(array);