Trong ứng dụng của tôi, tôi cần tìm tất cả các số nền, sau đó quét từng phần, tìm đầu tiên khớp với một phạm vi (chẳng hạn như từ 5 đến 15) và thay thế cá thể THAT bằng chuỗi khác "X".ruby regex - cách thay thế thể hiện thứ n của một trận đấu trong một chuỗi
chuỗi My thử nghiệm s = "1 foo 100 bar 10 gee 1"
mô hình ban đầu của tôi là bất kỳ chuỗi của 1 hoặc nhiều chữ số, ví dụ, re = Regexp.new(/\d+/)
matches = s.scan(re)
cho ["1", "100", "10", "1"]
Nếu tôi muốn thay thế các trận đấu thứ N, và chỉ Trận đấu thứ N, với chữ "X" thì sao?
Ví dụ nếu tôi muốn thay thế các trận đấu thứ ba "10" (trận đấu [2]) Tôi không thể chỉ nói s[matches[2]] = "X"
vì đó thực hiện hai thay thế
"1 foo X0 bar X gee 1"
Bất kỳ trợ giúp sẽ được đánh giá cao !
tôi phải thừa nhận nó không bao giờ xảy ra với tôi để thay thế các kết quả phù hợp khác với chính họ ... thông minh! cảm ơn! – jpwynn
Tôi thích sử dụng 'next' thay vì trả lại giá trị ban đầu. – bwest
Sử dụng các khối giúp giải quyết vấn đề của tôi. Cảm ơn bạn! – sbos61