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?


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

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


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

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

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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.