2010-09-17 8 views
164

Tengo una cadena llamada CurrentString y tiene la forma de algo como esto "Fruit: they taste good".
Me gustaría dividir el CurrentString usando el : como delimitador.
De esta manera, la palabra "Fruit" se dividirá en su propia cadena y "they taste good" será otra cadena.
Y luego simplemente me gustaría usar SetText() de 2 TextViews diferentes para mostrar esa cadena.Android Split cadena

¿Cuál sería la mejor manera de abordar esto?

+5

No puede simplemente usar el método split() de la clase String? http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split(java.lang.String) – Alex

+0

Probablemente puedas intentar leer expresiones regulares. Ellos también funcionan bien. – Shouvik

+10

@Falmarri: cualquier pregunta única sobre programación es bienvenida en Stack Overflow. –

Respuesta

474
String CurrentString = "Fruit: they taste good"; 
String[] separated = CurrentString.split(":"); 
separated[0]; // this will contain "Fruit" 
separated[1]; // this will contain " they taste good" 

Es posible que desee quitar el espacio a la segunda cadena:

separated[1] = separated[1].trim(); 

Hay otras maneras de hacerlo. Por ejemplo, puede utilizar la clase StringTokenizer (de java.util):

StringTokenizer tokens = new StringTokenizer(CurrentString, ":"); 
String first = tokens.nextToken();// this will contain "Fruit" 
String second = tokens.nextToken();// this will contain " they taste good" 
// in the case above I assumed the string has always that syntax (foo: bar) 
// but you may want to check if there are tokens or not using the hasMoreTokens method 
+1

Gracias por la excelente respuesta. utilicé el StringTokenizer y funcionó perfectamente. – zaid

+0

¡Gracias por esto! También es útil para separar horas y minutos al crear un nuevo objeto Time. – worked

+22

¡Gracias! ¡El método .split() no funciona en absoluto en Android! StringTokenizeris funciona bien. –

66

método .split va a funcionar, pero utiliza expresiones regulares. En este ejemplo sería (para robar de Cristian):

String[] separated = CurrentString.split("\\:"); 
separated[0]; // this will contain "Fruit" 
separated[1]; // this will contain " they taste good" 

Además, este vino de: Android split not working correctly

37

Separar una cadena Android por comas

String data = "1,Diego Maradona,Footballer,Argentina"; 
String[] items = data.split(","); 
for (String item : items) 
{ 
    System.out.println("item = " + item); 
} 
19

También puede ser que desee considerar el método específico de Android TextUtils.split().

La diferencia entre TextUtils.split() y String.split() se documenta con TextUtils.split():

String.split() devuelve [ ''] cuando la cadena se divida es vacío. Esto devuelve []. Esto no elimina ninguna cadena vacía del resultado.

Me parece un comportamiento más natural. En esencia TextUtils.split() es solo un envoltorio delgado para String.split(), que trata específicamente con el caso de cadena vacía. The code for the method es bastante simple.

+0

¿Cuál es la ventaja de utilizar TextUtils.split() en lugar de simplemente llamar a split() directamente en la cadena? – nibarius

+0

Respuesta editada para aclarar la diferencia entre TextUtils.split() y String.split() – gardarh

+0

Gracias, de hecho, leí la documentación de TextUtils.split() pero por alguna razón me perdí este detalle. Creo que estaba cansado de entender lo que realmente decía. – nibarius

21
 String s = "having Community Portal|Help Desk|Local Embassy|Reference Desk|Site News"; 
    StringTokenizer st = new StringTokenizer(s, "|"); 
     String community = st.nextToken(); 
     String helpDesk = st.nextToken(); 
     String localEmbassy = st.nextToken(); 
     String referenceDesk = st.nextToken(); 
     String siteNews = st.nextToken();