Muszę podzielić mój ciąg na spacje. W tym celu próbowałem:
str = "Hello I'm your String";
String[] splited = str.split(" ");
Ale to nie działa.
fork
link w lewym górnym rogu.
Muszę podzielić mój ciąg na spacje. W tym celu próbowałem:
str = "Hello I'm your String";
String[] splited = str.split(" ");
Ale to nie działa.
fork
link w lewym górnym rogu.
Odpowiedzi:
To, co masz, powinno działać. Jeśli jednak podane miejsca domyślnie ... coś innego? Możesz użyć wyrażenia regularnego:
str = "Hello I'm your String";
String[] splited = str.split("\\s+");
Spowoduje to, że dowolna liczba kolejnych spacji podzieli ciąg znaków na tokeny.
Na marginesie, nie jestem pewien, czy słowo „split” jest słowem :) Wierzę, że stan bycia ofiarą split jest również „split”. To jedna z tych trudnych zagadnień gramatycznych :-) Nie próbuję być wybredny, po prostu pomyślałem, że przekażę to dalej!
Chociaż zaakceptowana odpowiedź jest dobra, pamiętaj, że skończysz na wiodącym pustym ciągu, jeśli ciąg wejściowy zaczyna się od spacji. Na przykład z:
String str = " Hello I'm your String";
String[] splitStr = str.split("\\s+");
Wynik będzie:
splitStr[0] == "";
splitStr[1] == "Hello";
splitStr[2] == "I'm";
splitStr[3] == "Your";
splitStr[4] == "String";
Możesz więc przyciąć łańcuch przed podzieleniem go:
String str = " Hello I'm your String";
String[] splitStr = str.trim().split("\\s+");
Użyj, Stringutils.split()
aby podzielić ciąg według białych kroków. Na przykład StringUtils.split("Hello World")
zwraca „Hello” i „World”;
Aby rozwiązać wspomniany przypadek, stosujemy taką metodę podziału
String split[]= StringUtils.split("Hello I'm your String");
kiedy wydrukujemy podzieloną tablicę, wynikiem będzie:
Witaj
Ja jestem
Twój
Strunowy
Próbować
String[] splited = str.split("\\s");
http://download.oracle.com/javase/tutorial/essential/regex/pre_char_classes.html
jeśli w jakiś sposób nie chcesz używać metody podziału ciągu, możesz użyć klasy StringTokenizer w Javie jako ...
StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
String[] splited = new String[tokens.countTokens()];
int index = 0;
while(tokens.hasMoreTokens()){
splited[index] = tokens.nextToken();
++index;
}
Spróbuj tego
String str = "This is String";
String[] splited = str.split("\\s+");
String split_one=splited[0];
String split_second=splited[1];
String split_three=splited[2];
Log.d("Splited String ", "Splited String" + split_one+split_second+split_three);
OK, więc musimy podzielić, ponieważ już otrzymałeś odpowiedź, uogólniłem ją.
Jeśli chcesz podzielić dowolny ciąg znaków na spacje, ogranicznik (znaki specjalne).
Najpierw usuń wiodące miejsce, ponieważ powodują większość problemów.
str1 = " Hello I'm your String ";
str2 = " Are you serious about this question_ boy, aren't you? ";
Najpierw usuń wiodące miejsce, które może być spacją, tabulatorem itp.
String s = str1.replaceAll("^\\s+","");//starting with whitespace one or more
Teraz, jeśli chcesz podzielić według spacji lub dowolnego specjalnego znaku.
String[] sa = s.split("[^\\w]+");//split by any non word char
Ale ponieważ w zawiera [a-zA-Z_0-9], więc jeśli chcesz podzielić przez podkreślenie (_), użyj również
String[] sa = s.split("[!,? ._'@]+");//for str2 after removing leading space
replaceAll("^\\s+","")
uratowało mi dzień. To zadziałało w mojej sprawie. Dziękuję
Bardzo prosty przykład poniżej:
Mam nadzieję, że to pomoże.
String str = "Hello I'm your String";
String[] splited = str.split(" ");
var splited = str.split(" ");
var splited1=splited[0]; //Hello
var splited2=splited[1]; //I'm
var splited3=splited[2]; //your
var splited4=splited[3]; //String
możesz saperate string używając poniższego kodu
String thisString="Hello world";
String[] parts = theString.split(" ");
String first = parts[0];//"hello"
String second = parts[1];//"World"
Ponieważ minęło trochę czasu, odkąd te odpowiedzi zostały opublikowane, oto kolejny bardziej aktualny sposób zrobienia tego, o co pytamy:
List<String> output = new ArrayList<>();
try (Scanner sc = new Scanner(inputString)) {
while (sc.hasNext()) output.add(sc.next());
}
Teraz masz listę ciągów znaków (która jest prawdopodobnie lepsza niż tablica); jeśli potrzebujesz tablicy, możesz to zrobićoutput.toArray(new String[0]);
Prosty w plucie ciąg według spacji
String CurrentString = "First Second Last";
String[] separated = CurrentString.split(" ");
for (int i = 0; i < separated.length; i++) {
if (i == 0) {
Log.d("FName ** ", "" + separated[0].trim() + "\n ");
} else if (i == 1) {
Log.d("MName ** ", "" + separated[1].trim() + "\n ");
} else if (i == 2) {
Log.d("LName ** ", "" + separated[2].trim());
}
}