Kod '////'.split('/')
powoduje []
. Oczekiwałem, że będzie to ['', '', '', '', '']
. Jeśli jest to funkcja ruby, dlaczego jest tak zaprojektowany?Dlaczego "////'.split('/") produkuje []?
Odpowiedz
Ten projekt zapewnia wygodę podczas analizowania ciągów z ogranicznikami wleczonymi. Na przykład:
'1␣2␣3␣␣'.split('␣')
będzie teraz dawać ['1', '2', '3']
zamiast ['1', '2', '3', '', '']
.
Ta funkcja służy jedynie uproszczeniu obiegu dokumentów.
Jednak nie podoba mi się ta funkcja, ponieważ łamie ona czystość tej metody. Aby osiągnąć powyższy efekt, potrzebujesz tylko rstrip('␣')
między '1␣2␣3␣␣'
i split('␣')
.
'('␣')' wygląda uroczo. –
Nie można podzielić ciągu ograniczników za pomocą ogranicznika.
Należy przejść granicę jako drugi parametr do funkcji Split, aby osiągnąć to zachowanie
'////'.split('/',-1)
=>
["", "", "", "", ""]
Jeśli parametr limit zostanie pominięta, na końcu pola NULL są tłumione. Jeśli limit jest liczbą dodatnią, co najwyżej liczba pól zostanie zwrócona (jeśli limit wynosi 1, cały ciąg jest zwracany jako jedyny wpis w tablicy). Jeśli jest ujemna, nie ma limitu liczby zwróconych pól, a końcowe pola puste nie są pomijane.
* + 1 * .. Zrobiłem ... :) Ale możesz dodać linie z [doc] (http://www.ruby-doc.org/core-2.0.0/String.html#method-i- split) like - ** Jeśli pominięto parametr ograniczenia, końcowe pola zerowe są pomijane **. Jeśli limit jest liczbą dodatnią, co najwyżej liczba pól zostanie zwrócona (jeśli limit wynosi 1, cały ciąg jest zwracany jako jedyny wpis w tablicy). ** Jeśli wartość jest ujemna, nie ma limitu liczby zwróconych pól, a końcowe pola zerowe nie są pomijane. ** –
dzięki. naprawdę przydatny komentarz. – SergeyKutsko
Badanie zachowania metody split
wskazuje, że jest wynikiem optymalizacji, po prostu przycina puste elementy tablicy po ostatnim dopasowaniu, ponieważ jest pokazany poniżej:
'////'.split('/')
=> []
'//a//'.split('/')
=> ["", "", "a"]
- 1. Dlaczego procesor modelu asp.net mvc produkuje system.string []
- 2. Dlaczego split (") próbuje być (zbyt) inteligentny?
- 3. split data.table
- 4. Split ikiki
- 5. Android: takePicture() nie produkuje dźwięku
- 6. Javascript: dlaczego to produkuje i brzydki ciąg ??? Chciałbym waluty
- 7. error_reporting (E_ALL) nie produkuje błąd
- 8. Picasso produkuje OutOfMemoryError
- 9. gprof produkuje puste wyjście
- 10. RyuJit produkuje niepoprawne wyniki
- 11. Symfony produkuje białą stronę
- 12. RESTful produkuje plik binarny
- 13. Drukuj: nie produkuje wyjścia
- 14. Projections.countDistinct Hibernate produkuje nieoczekiwany wynik
- 15. Dlaczego nie mogę użyć "." jako ogranicznik w funkcji split()?
- 16. Dlaczego JavaScript split() daje różne wyniki z różnymi nazwami zmiennych?
- 17. Pandas TimeSeries resample produkuje NaNs
- 18. C++ split string po linii
- 19. Split XML w PHP
- 20. Split wynik „licznik”
- 21. IntelliJ Split Window Navigation
- 22. split ("\\") i błąd
- 23. F # Funkcja Split
- 24. split string with regex
- 25. Zakres dat SQL Split
- 26. C# string split
- 27. Twitter bootstrap split dropdown
- 28. Haskell filtr/Split lista
- 29. split(), ale zachowaj ogranicznik
- 30. MongoDB zapytanie produkuje lub odpowiedź zamiast I
+1 .. za zadawanie dobrego pytania ... :) –
Podczas gdy pytanie jest interesujące, nie jest w najlepszej formie, jaką można by zadać. Twoje pytanie może wprowadzić czytelnika w błąd, że cztery kolejne ukośniki są znaczące dla tego efektu, ale tak nie jest. Otrzymasz taki sam wynik przy krótszej sekwencji cięcia. – sawa