Ciąg podzielony Androida


227

Mam ciąg zwany CurrentStringi ma postać czegoś takiego "Fruit: they taste good".
Chciałbym podzielić CurrentStringużycie za pomocą :jako separatora.
W ten sposób słowo "Fruit"zostanie podzielone na własny ciąg i "they taste good"będzie innym ciągiem.
A potem chciałbym po prostu użyć SetText()2 różnych TextViewsdo wyświetlenia tego ciągu.

Jaki byłby najlepszy sposób na to?


Prawdopodobnie możesz spróbować odczytać wyrażenia regularne. Oni też działają dobrze.
Shouvik

10
@Falmarri - Wszelkie przepełnione pytania dotyczące programowania są mile widziane w przypadku przepełnienia stosu.
Tim Post

Odpowiedzi:


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"

Możesz usunąć spację do drugiego ciągu:

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

Jeśli chcesz podzielić ciąg znaków ze znakiem specjalnym, takim jak kropka (.), Powinieneś użyć znaku ucieczki \ przed kropką

Przykład:

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"

Istnieją inne sposoby, aby to zrobić. Na przykład możesz użyć StringTokenizerklasy (z 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

Dzięki za to! Przydatny także do oddzielania godziny i minuty podczas tworzenia nowego obiektu Time.
pracował

24
Dziękuję Ci! Metoda .split () w ogóle nie działa w systemie Android! StringTokenizer działa poprawnie.
Ayush Pateria

Tak, ma ... jakie problemy miałeś?
Cristian

split w Androidzie otrzymuje wyrażenie regularne zamiast prostego dzielnika ciągów.
htafoya,

1
@HardikParmar używa etPhoneNo.getText().toString().replaceAll("\\D", "");swoich komunikatów, które zastępują wszystko, co nie jest cyfrą
MilapTank

86

Metoda .split będzie działać, ale używa wyrażeń regularnych. W tym przykładzie byłoby (ukraść od Cristiana):

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

Pochodzi również z: podział systemu Android nie działa poprawnie


52

android ciąg podzielony przecinkiem

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

Możesz także rozważyć zastosowanie metody TextUtils.split () dla systemu Android .

Różnica między TextUtils.split () a String.split () jest udokumentowana za pomocą TextUtils.split ():

String.split () zwraca [''], gdy ciąg do podzielenia jest pusty. Zwraca []. To nie usuwa żadnych pustych ciągów z wyniku.

Uważam to za bardziej naturalne zachowanie. W istocie TextUtils.split () to tylko cienkie opakowanie dla String.split (), zajmujące się szczególnie przypadkiem pustego ciągu. Kod metody jest w rzeczywistości dość prosty.


Jaka jest korzyść z używania TextUtils.split () zamiast wywoływania split () bezpośrednio w ciągu?
nibarius

Edytowana odpowiedź w celu wyjaśnienia różnicy między TextUtils.split () a String.split ()
gardarh

Dzięki, właściwie przeczytałem dokumentację TextUtils.split (), ale z jakiegoś powodu brakowało mi tego szczegółu. Chyba byłem zmęczony, aby zrozumieć, co to właściwie mówi.
nibarius

0

String s = "String ="

String [] str = s.split ("="); // teraz str [0] to „hello”, a str [1] to „goodmorning, 2,1”

dodaj ten ciąg

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.