@BasilBourque - Nie mogłem znaleźć żadnego przycisku uruchamiania na tym łączu
nanosoft
1
@nanosoft Strona IdeOne.com uruchamia się automatycznie po załadowaniu. Zobacz wynik poniżej kodu, w sekcji stdout . Aby zmienić kod, kliknij forklink w lewym górnym rogu.
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!
Jestem Szwajcarem, czego się spodziewałeś, mój angielski nie jest najlepszy; P, w każdym razie dzięki!
safari
29
:-) Hej, to nie jest duże. Użyłem absurdalnych nazw zmiennych (w kodzie prawdopodobnie nie powinienem był pozwolić żyć!) Nie chciałem być nazistą w gramatyce ani nic takiego, tylko przekazywać trochę ciekawostek, to wszystko.
corsiKa
7
@Safari, właśnie dostałeś 2 świetne porady w cenie 1. tylko żartowałem. Świetna odpowiedź.
Nirmal Mangal,
8
„To, co masz, powinno działać”. Mówię coś podobnego dość często, gdy mój kod się psuje.
Griffin,
1
Uważam to za przydatne, ponieważ moim przypadkiem użycia było podzielenie łańcucha i usunięcie wielu spacji. Jedna linia kodu robi dla mnie obie te rzeczy.
Niharika Upadhyay
87
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+");
Wierzę, że umieszczenie wyrażenia regularnego w nawiasach str.split powinno rozwiązać problem. Metoda Java String.split () oparta jest na wyrażeniach regularnych, więc potrzebujesz:
str ="Hello I'm your String";String[] splitStr = str.split("\\s+");
Istnieje możliwość zgłoszenia wyjątku ArrayIndexOutofBounds.
Ajay Takur,
2
Nie, to nie wyrzuci „ArrayIndexOutofBounds”, ponieważ zadeklarowałem rozmiar tablicy zgodnie z liczbą tokenów znalezionych w String. zapewni to, że rozmiar tablic nie będzie większy niż otrzymane tokeny w ciągu.
import java.util.regex.Pattern;...privatestaticfinalPattern SPACE =Pattern.compile(" ");String[] arr = SPACE.split(str);// str is the string to be split
To replaceAll("^\\s+","")uratowało mi dzień. To zadziałało w mojej sprawie. Dziękuję
Kostas Asargiotakis
2
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
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]);
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:
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!
źródło
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:
Wynik będzie:
Możesz więc przyciąć łańcuch przed podzieleniem go:
źródło
Wierzę, że umieszczenie wyrażenia regularnego w nawiasach str.split powinno rozwiązać problem. Metoda Java String.split () oparta jest na wyrażeniach regularnych, więc potrzebujesz:
źródło
Użyj,
Stringutils.split()
aby podzielić ciąg według białych kroków. Na przykładStringUtils.split("Hello World")
zwraca „Hello” i „World”;Aby rozwiązać wspomniany przypadek, stosujemy taką metodę podziału
kiedy wydrukujemy podzieloną tablicę, wynikiem będzie:
Witaj
Ja jestem
Twój
Strunowy
Aby zobaczyć pełną przykładową wersję demo, sprawdź tutaj
źródło
Próbować
http://download.oracle.com/javase/tutorial/essential/regex/pre_char_classes.html
źródło
jeśli w jakiś sposób nie chcesz używać metody podziału ciągu, możesz użyć klasy StringTokenizer w Javie jako ...
źródło
Spróbuj tego
źródło
Alternatywnym sposobem byłoby:
Widziałem to tutaj
źródło
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.
Najpierw usuń wiodące miejsce, które może być spacją, tabulatorem itp.
Teraz, jeśli chcesz podzielić według spacji lub dowolnego specjalnego znaku.
Ale ponieważ w zawiera [a-zA-Z_0-9], więc jeśli chcesz podzielić przez podkreślenie (_), użyj również
źródło
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.
źródło
możesz saperate string używając poniższego kodu
źródło
Oto metoda przycinania ciągu, który ma znak „,” lub biały znak
źródło
Ponieważ minęło trochę czasu, odkąd te odpowiedzi zostały opublikowane, oto kolejny bardziej aktualny sposób zrobienia tego, o co pytamy:
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]);
źródło
Nie tylko biała przestrzeń, ale moje rozwiązanie rozwiązuje również niewidzialne postacie.
źródło
Prosty w plucie ciąg według spacji
źródło