2010-03-01 38 views
7

Tôi biết rằng tôi có thể chuyển một chuỗi làm tham số thứ hai cho phương thức thay thế của đối tượng chuỗi JavaScript. Trong trường hợp này tôi có thể sử dụng $ '$' để tham khảo các phần văn bản trái/phải của một trận đấu thành công. Bây giờ câu hỏi của tôi là, Nếu tôi chuyển một hàm gọi lại làm tham số thứ hai, làm thế nào tôi có thể nhận được cùng một thông tin? Tôi muốn sử dụng thông tin này trong hàm gọi lại. Cảm ơn rất nhiều.câu hỏi về phương pháp thay thế chuỗi javascript

+3

... whoa, bạn có thể sử dụng một callback? Khéo léo! – Matchu

Trả lời

10

Xem Mozilla's documentation; bạn sẽ không nhận được dữ liệu đó miễn phí.

Tin vui là, bạn sẽ lấy bù đắp của đối sánh làm đối số từ hai đến cuối cùng và chuỗi tổng số là đối số cuối cùng. Vì vậy, bạn có thể chạy các chức năng chuỗi con của riêng bạn.

var str = 'abc'; 
str = str.replace('b', function (match, offset, full) { 
    var before = full.substr(0, offset), 
     after = full.substr(offset + 1, full.length - offset); 
    return 'foo'; // or, ya know, something actually using before and after 
}); 
0
var str = 'abc'; 
str = str.replace('b', function (match) { 
    // (!) List of actual arguments depends from template of RegEx >>> 
    var offset = arguments.length - 1, full = arguments[offset]; 
    offset = arguments[offset - 1]; 
    // (!) But the first argument is match 
    var before = full.substr(0, offset), 
     after = full.substr(offset + 1, full.length - offset); 
    return 'foo'; // or, ya know, something actually using before and after 
}); 
Các vấn đề liên quan