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?

zaid
źródło
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
Cristian
źródło
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

Silas Greenback
źródło
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);
}
Mahasam
źródło
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
źródło
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.

gardarh
źródło
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


źródło