Android Split string

227

Tengo una cadena llamada CurrentStringy tiene la forma de algo como esto "Fruit: they taste good".
Me gustaría dividir el CurrentStringuso del :como delimitador.
Así, la palabra "Fruit"se dividirá en su propia cadena y "they taste good"será otra cadena.
Y luego simplemente me gustaría usar SetText()2 diferentes TextViewspara mostrar esa cadena.

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

zaid
fuente
Probablemente podrías intentar leer en expresiones regulares. Funcionan bien también.
Shouvik
10
@Falmarri: cualquier pregunta única sobre programación es bienvenida en Stack Overflow.
Tim Post

Respuestas:

606
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 eliminar el espacio a la segunda cadena:

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

Si desea dividir la cadena con un carácter especial como punto (.), Debe usar el carácter de escape \ antes del punto

Ejemplo:

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

Hay otras formas de hacerlo. Por ejemplo, puede usar la StringTokenizerclase (from 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
Cristian
fuente
¡Gracias por esto! También es útil para separar la hora y los minutos al crear un nuevo objeto Time.
trabajó el
24
¡Gracias! ¡El método .split () no funciona para nada en Android! StringTokenizer está funcionando bien.
Ayush Pateria
Sí lo hace ... ¿qué problemas tuviste?
Cristian
dividir en Android recibe una expresión regular en lugar de un simple divisor de cadena.
htafoya
1
@HardikParmar usa etPhoneNo.getText().toString().replaceAll("\\D", "");sus palabras que reemplazan todo lo que no es dígito
MilapTank
86

El método .split funcionará, pero usa expresiones regulares. En este ejemplo sería (para robarle a Cristian):

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

Además, esto vino de: Android split no funciona correctamente

Dólar de Silas
fuente
52

cadena dividida de Android por coma

String data = "1,Diego Maradona,Footballer,Argentina";
String[] items = data.split(",");
for (String item : items)
{
    System.out.println("item = " + item);
}
mahasam
fuente
25
     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();
Faakhir
fuente
22

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

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

String.split () devuelve [''] cuando la cadena a dividir está vacía. Esto devuelve []. Esto no elimina ninguna cadena vacía del resultado.

Me parece un comportamiento más natural. En esencia, TextUtils.split () es solo una envoltura delgada para String.split (), que trata específicamente con el caso de la cadena vacía. El código para el método es realmente bastante simple.

Gardarh
fuente
¿Cuál es el beneficio de usar TextUtils.split () en lugar de simplemente llamar a split () directamente en la cadena?
nibarius
Respuesta editada para aclarar la diferencia entre TextUtils.split () y String.split ()
gardarh
Gracias, en realidad 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
0

Cadena s = "Cadena ="

Cadena [] str = s.split ("="); // ahora str [0] es "hola" y str [1] es "buenos días, 2,1"

agrega esta cadena


fuente