Coś jak: How to split String with some separator but without removing that separator in Java?Dzielenie łańcucha przez spację bez usuwania miejsca?
muszę wziąć "Hello World" i dostać [ "Hello", "", "World"]
Coś jak: How to split String with some separator but without removing that separator in Java?Dzielenie łańcucha przez spację bez usuwania miejsca?
muszę wziąć "Hello World" i dostać [ "Hello", "", "World"]
Można użyć regex, choć prawdopodobnie jest przesadą:
StringCollection resultList = new StringCollection();
Regex regexObj = new Regex(@"(?:\b\w+\b|\s)");
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success) {
resultList.Add(matchResult.Value);
matchResult = matchResult.NextMatch();
}
Jeśli podzielisz tylko granicę słowa, otrzymasz coś bardzo zbliżonego do tego, o co poprosisz.
string[] arr = Regex.Split("A quick brown fox.", "\\b");
ARR [] = { "", "A", "", "szybki", "", "br" "", "lis", "" }
Z tym że 'string.Split()' nie działa z wyrażeń regularnych. – svick
Tak, widziałem odniesienie do Javy w pierwszym wierszu opisu i przeoczyłem, że był tam znacznik dla C#. – phatfingers
Poprawiłem przykładowy kod napisany w języku C#. Wyniki tablicy są takie same. – phatfingers
Możesz użyć do tego celu Regex.Split()
. Jeśli dołączyć wzór na przechwytywanie nawiasy, zostanie on uwzględniony w wyniku TOO:
Regex.Split("Hello World", "()")
daje dokładnie to, czego chciał.
+1 dla eleganckiego rozwiązania. Dlaczego nie uznał twojej odpowiedzi za poprawną ... –
Dlaczego? Dlaczego nie możesz po prostu założyć, że pomiędzy każdym z dwóch elementów istnieje przestrzeń? – SLaks
Dlaczego dokładnie? Wiesz, że separator jest spacją, więc dla każdego elementu wynikowej tablicy byłby odstęp między sąsiadującymi elementami. Jeśli użyjesz metody string.Join(), możesz umieścić to miejsce z powrotem. Jestem zaskoczony, dlaczego potrzebujesz tego w wynikach podzielonych. – slugster
Co byś chciał, gdyby cześć i świat zostały rozdzielone przez więcej niż jedno miejsce? –