Android Split String

227

Ich habe eine Zeichenfolge namens CurrentStringund hat die Form von so etwas "Fruit: they taste good".
Ich möchte die CurrentStringVerwendung des :als Trennzeichen aufteilen .
Auf diese Weise wird das Wort "Fruit"in eine eigene Zeichenfolge aufgeteilt und "they taste good"ist eine weitere Zeichenfolge.
Und dann möchte ich einfach SetText()2 verschiedene verwenden TextViews, um diese Zeichenfolge anzuzeigen.

Was wäre der beste Weg, um dies zu erreichen?

zaid
quelle
Sie könnten wahrscheinlich versuchen, in reguläre Ausdrücke zu lesen. Sie funktionieren auch gut.
Shouvik
10
@Falmarri - Jede spezielle Frage zur Programmierung ist bei Stack Overflow willkommen.
Tim Post

Antworten:

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"

Möglicherweise möchten Sie das Leerzeichen für die zweite Zeichenfolge entfernen:

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

Wenn Sie die Zeichenfolge mit einem Sonderzeichen wie Punkt (.) Teilen möchten, sollten Sie das Escape-Zeichen \ vor dem Punkt verwenden

Beispiel:

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"

Es gibt andere Möglichkeiten, dies zu tun. Zum Beispiel können Sie die StringTokenizerKlasse (von java.util) verwenden:

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
quelle
Danke dafür! Auch nützlich zum Trennen von Stunde und Minute beim Erstellen eines neuen Zeitobjekts.
arbeitete
24
Danke! Die Methode .split () funktioniert in Android überhaupt nicht! StringTokenizer funktioniert einwandfrei.
Ayush Pateria
Ja, das tut es ... welche Probleme hatten Sie?
Cristian
Split in Android erhält einen regulären Ausdruck anstelle eines einfachen String-Teilers.
Htafoya
1
@HardikParmar verwenden etPhoneNo.getText().toString().replaceAll("\\D", "");seine sagt, dass alle ersetzen, die nicht Ziffer ist
MilapTank
86

Die .split-Methode funktioniert, verwendet jedoch reguläre Ausdrücke. In diesem Beispiel wäre es (von Cristian zu stehlen):

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

Dies kam auch von: Android Split funktioniert nicht richtig

Silas Greenback
quelle
52

Android Split String durch Komma

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

Möglicherweise möchten Sie auch die Android-spezifische TextUtils.split () -Methode in Betracht ziehen .

Der Unterschied zwischen TextUtils.split () und String.split () wird mit TextUtils.split () dokumentiert:

String.split () gibt [''] zurück, wenn der zu teilende String leer ist. Dies gibt [] zurück. Dadurch werden keine leeren Zeichenfolgen aus dem Ergebnis entfernt.

Ich finde das ein natürlicheres Verhalten. Im Wesentlichen ist TextUtils.split () nur ein dünner Wrapper für String.split (), der sich speziell mit dem Fall der leeren Zeichenfolge befasst. Der Code für die Methode ist eigentlich recht einfach.

Gardarh
quelle
Was ist der Vorteil der Verwendung von TextUtils.split (), anstatt nur split () direkt in der Zeichenfolge aufzurufen?
Nibarius
Bearbeitete Antwort, um den Unterschied zwischen TextUtils.split () und String.split () zu klären
Gardarh
Danke, ich habe tatsächlich die Dokumentation zu TextUtils.split () gelesen, aber aus irgendeinem Grund habe ich dieses Detail übersehen. Ich war wohl zu müde, um zu verstehen, was es tatsächlich sagte.
Nibarius
0

String s = "String ="

String [] str = s.split ("="); // jetzt ist str [0] "hallo" und str [1] ist "goodmorning, 2,1"

füge diesen String hinzu


quelle