Jaka jest różnica między tymi dwoma (String#scan
i String#split
) w Ruby?Różnica między String.scan i String.split
9
A
Odpowiedz
19
Służą one całkowicie innym celom. String#scan
służy do wyodrębniania dopasowań wyrażenia regularnego z ciągu znaków i zwraca dopasowania w tablicy, podczas gdy String#split
ma na celu podział ciągu na tablicę, w oparciu o separator. Separator może być statycznym ciągiem znaków (np. ;
, aby podzielić na pojedynczy średnik) lub wyrażeniem regularnym (np. /\s/+
, aby podzielić na dowolne białe znaki).
Dane wyjściowe z String#split
nie zawierają ogranicznika. Zamiast tego wszystko, z wyjątkiem ogranicznika, zostanie zwrócone w macierzy wyjściowej, podczas gdy wyjście o wartości String#scan
będzie zawierać tylko to, co jest dopasowane przez separator.
# A delimited string split on | returns everything surrounding the | delimiters
"a|delimited|string".split("|")
# Prints: ["a", "delimited", "string"]
# The same string scanninng for | only returns the matched |
"a|delimited|string".scan("|")
# Prints: ["|", "|"]
Oba powyższe wyrażenia również przyjmą wyrażenie regularne zamiast prostego ciągu "|"
.
# Split on everything between and including two t's
"a|delimited|string".split(/t.+t/)
# Prints: ["a|delimi", "ring"]
# Search for everything between and including two t's
"a|delimited|string".scan(/t.+t/)
# Prints: ["ted|st"]
Powiązane problemy
- 1. Różne zachowanie przy łączeniu znaków diakrytycznych między String.Split() i String.IndexOf()
- 2. Różnica między unwrapObservable i()
- 3. Różnica między "**/* /" i "** /"?
- 4. Różnica między | = i^= css
- 5. Composer.phar różnica między | i ||
- 6. Różnica między "% ~ dp0" i ". \"?
- 7. Różnica między ". +" I ". +?"
- 8. MySQL: Różnica między ",", "i"
- 9. Różnica między (++ i) oraz (i ++)
- 10. Różnica kręgosłupa Różnica między CompositeView i CollectionView?
- 11. Różnica między logger.info i logger.debug
- 12. Różnica między fgets i fscanf?
- 13. Różnica między NSLog i DLog
- 14. Różnica między RoutedEventHandler i EventHandler
- 15. Różnica między obrysem i wypełnieniem?
- 16. Różnica między Parameters.Add i Parameters.AddWithValue
- 17. Różnica między putback() i unget()
- 18. Różnica między Delegate.BeginInvoke i Thread.Start
- 19. Różnica między TVar i TMVar
- 20. Różnica między DatagramSocket i DatagramChannel
- 21. Różnica między intent.setClass() i intent.setComponent()
- 22. różnica między -lgcc_s i gcc
- 23. Różnica między string.ToLower i TextInfo.ToLower
- 24. Różnica między javax.sql i java.sql?
- 25. Różnica między paint() i paintcomponent()?
- 26. Różnica między app.all ("*") i app.use ("/")
- 27. Różnica między c() i append()
- 28. Różnica między KeyEventArgs.systemKey i KeyEventArgs.Key
- 29. Różnica między org.apache.spark.ml.classification i org.apache.spark.mllib.classification
- 30. Różnica między GotFocus i GotKeyboardFocus
Jaka jest różnica? Jedyną wspólną cechą jest to, że oba są wywoływane z obiektu 'String' lub klasy potomnej. Co wydawało się takie zagmatwane? To pytanie mogło zostać właśnie rozwiązane przez przyjrzenie się ruby doc. – Shoe