W C #, jeśli chcę podzielić jeden string
przez inny, string
muszę zrobić coś takiego:
testString.Split(new string[] { "anotherString" }, StringSplitOptions.None);
Z przeciążonej String.Split
Dokumentacji MSDN możemy zobaczyć implementację i dlaczego należy wykonać takie połączenie.
Pochodząc z Pythona , trudno mi właściwie zrozumieć, dlaczego takie połączenie jest potrzebne. Mam na myśli, że mogłabym użyć Regex.Split
podobnej składni niż implementacja Pythona, ale musiałbym to zrobić kosztem mniejszej wydajności (czasu instalacji) dla dowolnej prostej rzeczy .
Zasadniczo moje pytanie brzmi: dlaczego, u diabła, nie możemy po prostu zrobić:
testString.Split("anotherString");
Zauważ, że nie sugeruję żadnego prototypu ani implementacji. Rozumiem, dlaczego nie można wdrożyć powyższej wersji, biorąc pod uwagę bieżący interfejs API. Moim celem było zrozumienie, dlaczego taki interfejs API mógł zostać utworzony, biorąc pod uwagę korzyści wynikające z powyższej składni. Na razie elastyczność wydaje się być celem prądu, String.Split
który ma sens, ale szczerze mówiąc, naprawdę myślałem, że gdzieś nastąpił jakiś wzrost wydajności. Chyba się myliłem.
testString.Split(",.;");
i testString.Split(new Char [] {',', '.', ';',);
które nie są tym samym.
IEnumerable<char>
, gdy sugerowany przez Ciebie dodatkowy prototyp może w niektórych przypadkach wydawać się niejednoznaczny (czy ograniczasz go przez cały ciąg, czy też przez każdy z jego znaków?).
testString.Split("anotherString");
, jestem całkiem pewny, że mogę powiedzieć, że oczekiwanym zachowaniem było ograniczenie całego łańcucha ( anotherString
w tym przypadku).