Was ist der Unterschied zwischen diesen beiden (String#scan
und String#split
) in Ruby?Unterschied zwischen String.scan und String.split
Antwort
Sie dienen ganz anderen Zwecken. String#scan
wird verwendet, um Übereinstimmungen eines regulären Ausdrucks aus einer Zeichenfolge zu extrahieren und die Übereinstimmungen in einem Array zurückzugeben, während String#split
eine Zeichenfolge basierend auf einem Begrenzungszeichen in ein Array aufteilen soll. Das Trennzeichen kann entweder eine statische Zeichenfolge (wie ;
, die auf ein einzelnes Semikolon aufgeteilt werden soll) oder ein regulärer Ausdruck (wie /\s/+
zum Aufteilen auf beliebige Leerzeichen) sein.
Die Ausgabe von String#split
enthält das Trennzeichen nicht. Stattdessen würde alles außer dem Begrenzer im Ausgabe-Array zurückgegeben werden, während die Ausgabe von String#scan
nur enthalten würde, was mit dem Begrenzer übereinstimmt.
# 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: ["|", "|"]
Beide oben genannten würde auch einen regulären Ausdruck anstelle des einfachen String "|"
akzeptieren.
# 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"]
- 1. Unterschied zwischen der Verwendung von StringTokenizer und String.split()?
- 2. Unterschied zwischen Vorzeichen & und *?
- 3. VBA: Unterschied zwischen & und +
- 4. Unterschied zwischen "**/* /" und "** /"?
- 5. Unterschied zwischen $ # und $ {# @}
- 6. Unterschied zwischen = und: =
- 7. Unterschied zwischen '#', '%' und '$'
- 8. MySQL: Unterschied zwischen ', `,' und '
- 9. C++ Unterschied zwischen '//' und '///'
- 10. Unterschied zwischen String.Empty und ""
- 11. Unterschied zwischen `% in%` und `==`
- 12. Unterschied zwischen numpy.logical_and und &
- 13. Unterschied zwischen. und #
- 14. Unterschied zwischen // und http: //
- 15. Unterschied zwischen -Wconversion zwischen gcc und g ++
- 16. string.split (Text) oder text.split() Was ist der Unterschied?
- 17. Unterschied zwischen Wörterbuch und Hashtable
- 18. Unterschied zwischen FetchMode und FetchType
- 19. Unterschied zwischen Application_Start und Application_OnStart
- 20. Unterschied zwischen Uint8Array und Uint8ClampedArray
- 21. Unterschied zwischen BOOST_CHECK_CLOSE und BOOST_CHECK_CLOSE_FRACTION?
- 22. Unterschied zwischen Suche und Index
- 23. Unterschied zwischen AJAX und Senden
- 24. Unterschied zwischen Spekulation und Vorhersage
- 25. Unterschied zwischen inproc und outproc
- 26. Unterschied zwischen Clojure und Clojurescript?
- 27. Unterschied zwischen NSArray und NSMutableArray
- 28. Unterschied zwischen libcurl und libsoup
- 29. Unterschied zwischen DirectoryCatalog und AssemblyCatalog
- 30. Unterschied zwischen * y ++ und ++ * y?
Was ist der Unterschied? Das einzige, was sie gemeinsam haben, ist, dass sie beide von einem "String" -Objekt oder einer Kindklasse aufgerufen werden. Was schien so verwirrend? Diese Frage könnte gerade durch einen Blick auf den Rubin Doc gelöst werden. – Shoe