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?


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

¡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


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);
}

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();

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.


¿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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.