Tôi mới sử dụng Ruby và luôn sử dụng String.scan
để tìm kiếm sự xuất hiện đầu tiên của một số. Nó là loại kỳ lạ rằng giá trị trả về là trong mảng lồng nhau, nhưng tôi chỉ cần [0][0]
cho các giá trị tôi muốn. (Tôi chắc chắn nó có mục đích của nó, chỉ là tôi chưa sử dụng nó.)Sự khác biệt giữa quét và khớp trên chuỗi Ruby
Tôi vừa phát hiện ra rằng có một phương pháp String.match
. Và nó có vẻ thuận tiện hơn vì mảng được trả về không được lồng nhau.
Dưới đây là một ví dụ về hai, lần đầu tiên được quét:
>> 'a 1-night stay'.scan(/(a)?(\d*)[- ]night/i).to_a
=> [["a ", "1"]]
sau đó là trận đấu
>> 'a 1-night stay'.match(/(a)?(\d*)[- ]night/i).to_a
=> ["a 1-night", "a ", "1"]
Tôi có kiểm tra các API, nhưng tôi thực sự không thể phân biệt sự khác biệt, như cả hai được gọi là 'phù hợp với mô hình'.
Câu hỏi này, chỉ đơn giản là tò mò, về những gì scan
có thể làm điều đó match
không thể, và ngược lại. Bất kỳ kịch bản cụ thể mà chỉ có một người có thể thực hiện? Có phải là match
kém hơn scan
không?