Sự khác nhau giữa hai (String#scan
và String#split
) trong Ruby là gì?Sự khác nhau giữa String.scan và String.split
9
A
Trả lời
19
Chúng phục vụ các mục đích hoàn toàn khác nhau. String#scan
được sử dụng để trích xuất các kết quả trùng khớp của một biểu thức chính quy từ một chuỗi và trả về các kết quả phù hợp trong một mảng, trong khi String#split
nhằm chia chuỗi thành một mảng dựa trên dấu phân cách. Dấu phân tách có thể là một chuỗi tĩnh (như ;
để phân tách trên một dấu chấm phẩy) hoặc một cụm từ thông dụng (như /\s/+
để phân tách trên bất kỳ ký tự khoảng trống nào).
Đầu ra của String#split
không bao gồm dấu phân tách. Thay vào đó, mọi thứ ngoại trừ dấu phân tách sẽ được trả lại trong mảng đầu ra, trong khi đầu ra của String#scan
chỉ chỉ bao gồm những gì được dấu phân tách phù hợp.
# 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: ["|", "|"]
Cả hai bên trên cũng sẽ chấp nhận biểu thức chính quy thay cho chuỗi đơn giản "|"
.
# 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"]
Các vấn đề liên quan
- 1. Sự khác nhau giữa .Equals và ==
- 2. Sự khác nhau giữa% w và% W
- 3. Sự khác nhau giữa ParameterInfo.DefaultValue và ParameterInfo.RawDefaultValue
- 4. Sự khác nhau giữa MBean và MXBean
- 5. Sự khác nhau giữa ConfigurationManager và ConfigurationSettings
- 6. Sự khác nhau giữa Tkinter và Tkinter
- 7. Sự khác nhau giữa! = Và =! trong Java?
- 8. Sự khác nhau giữa 'SpecialFolder.LocalApplicationData' và 'SpecialFolder.ApplicationData'?
- 9. Sự khác nhau giữa String.getBytes() và IOUtils.toByteArray()?
- 10. Sự khác nhau giữa presentModalViewController và presentViewController?
- 11. Sự khác nhau giữa NSInvocationOperation và NSBlockOperation
- 12. Sự khác nhau giữa TVar và TMVar
- 13. Sự khác nhau giữa onClickListener và onItemClickListener
- 14. Sự khác nhau giữa `require` và` gem`
- 15. Sự khác nhau giữa HttpUtility.HtmlEncode và Server.HtmlEncode
- 16. Sự khác nhau giữa sqlplus và sqldeveloper?
- 17. Sự khác nhau giữa JPA và JPA2
- 18. Sự khác nhau giữa DECIMAL và NUMERIC
- 19. Sự khác nhau giữa "./somescript.sh" và ". ./somescript.sh"
- 20. Sự khác nhau giữa GIT và CVS
- 21. Sự khác nhau giữa System.Drawing.Point và System.Drawing.PointF
- 22. Sự khác nhau giữa REST và WebServices
- 23. Sự khác nhau giữa sys và os.sys
- 24. Sự khác nhau giữa select() và selectAll()
- 25. Sự khác nhau giữa restartLoader và onContentChanged
- 26. Sự khác nhau giữa dbcontext.Add và dbcontext.AddObject
- 27. Sự khác nhau giữa int32_t và int_fast32_t
- 28. Sự khác nhau giữa | và || trong MATLAB?
- 29. Có sự khác nhau giữa "và"
- 30. Sự khác nhau giữa `% trong%` và `== '
Sự khác biệt là gì? Điều duy nhất mà chúng có điểm chung là chúng được gọi từ một đối tượng 'String' hoặc lớp con. Điều gì có vẻ rất khó hiểu? Câu hỏi này có thể vừa được giải quyết bằng cách nhìn vào tài liệu ruby. – Shoe