2010-09-30 52 views
20

Tôi đang gặp một vấn đề tìm hiểu làm thế nào để thay thế cuối cùng ' 'trong một chuỗi với' và':Làm thế nào để thay thế xuất hiện cuối cùng của ký tự trong một chuỗi sử dụng javascript

Có chuỗi này: test1, test2, Test3

và tôi muốn kết thúc với: test1, test2 và Test3

tôi đang cố gắng một cái gì đó như thế này:

var dialog = 'test1, test2, test3';  
dialog = dialog.replace(new RegExp(', /g').lastIndex, ' and '); 

nhưng nó không làm việc

Trả lời

36
foo.replace(/,([^,]*)$/, ' and $1') 

sử dụng ký hiệu $ (cuối dòng) để cung cấp vị trí của bạn và tìm mẫu ở bên phải dấu phẩy không bao gồm bất kỳ dấu phẩy nào khác.

Edit:

Các công trình trên chính xác cho các yêu cầu được xác định (mặc dù các chuỗi thay thế là tùy tiện lỏng) nhưng dựa trên những lời chỉ trích từ bình luận dưới đây tốt hơn phản ánh tinh thần của các yêu cầu ban đầu.

foo.replace(/,\s([^,]+)$/, ' and $1') 
+0

+1, có thể tốt hơn việc sử dụng '\ w' làm giật gân vì nó bao gồm hơn, ví dụ: http://jsbin.com/utedu/2 –

+0

Điều này cũng khớp' test1, test2, 'và tạo' test1, test2 và 'cho nó. Ngoài ra, nó chèn một ký tự khoảng trống thừa cho chuỗi đầu vào ban đầu, vì nó quên khớp với ký tự khoảng trắng sau ','. – splash

+1

@splash - xem chỉnh sửa. Tôi khá tự tin rằng OP có thể tự mình sửa đổi nếu yêu cầu cụ thể hơn là thể hiện, tôi không muốn đưa ra giả định về những gì mọi người thực sự muốn nói. – annakata

4
result = dialog.replace(/,\s(\w+)$/, " and $1"); 

$1 là đề cập đến nhóm chụp đầu tiên (\w+) của trận đấu.

+1

Ví dụ: http://jsbin.com/utedu –

+0

Điều này wi sẽ thất bại đối với các chuỗi như 'test-1, test-2, test-3', nhưng một lần nữa tôi tự tin rằng OP có thể tạo ra những thích ứng như vậy. – annakata

+0

Đúng vậy @annakata. – splash

0

regex mô hình tìm kiếm \ s ([^,] +) $

Line1: If not, sdsdsdsdsa sas ., sad, whaterver4 
Line2: If not, fs sadXD sad , ,sadXYZ!X 
Line3: If not d,,sds,, sasa sd a, sds, 23233 

Tìm kiếm với mẫu tìm thấy Line1: whaterver4 Line3: 23233

Tuy doesnt tìm Line2: sadXYZ! X
Chỉ thiếu khoảng trắng

Các vấn đề liên quan