2012-09-03 78 views
32

Người mới tham gia tương đối với Javascript và tìm cách xóa ký tự cuối cùng của chuỗi nếu đó là dấu hai chấm.Javascript: Xóa ký tự cuối cùng nếu dấu hai chấm

Tôi biết myString = myString.replace('/^\\:/'); sẽ hoạt động để bắt đầu dòng nhưng không chắc chắn cách hoán đổi trong ký tự $ để thay đổi ở cuối dòng ... ai cũng có thể sửa nó không?

Cảm ơn

Trả lời

61

Các biểu hiện thường xuyên theo nghĩa đen (/.../) không phải ở trong một chuỗi. Chỉnh mã của bạn để loại bỏ các thư ruột kết ở phần đầu của chuỗi, bạn nhận được:

myString = myString.replace(/^\:/, ''); 

Để phù hợp với thư ruột kết ở phần cuối của chuỗi, đưa $ sau dấu hai chấm thay vì ^ trước khi nó:

myString = myString.replace(/\:$/, ''); 

Bạn cũng có thể làm điều đó bằng chuỗi hoạt động đơn giản:

if (myString.charAt(myString.length - 1) == ':') { 
    myString = myString.substr(0, myString.length - 1); 
} 
+0

Cảm ơn câu trả lời chi tiết. Là một người mới, tôi hiểu về việc sử dụng dấu gạch chéo ngược làm ký tự thoát nhưng tại sao có một số dấu gạch chéo ngược/ngược lại trong câu lệnh 'replace'? – neil

+0

@neilf: Chữ slahses '/.../' là cụm từ thông dụng. Bên trong biểu thức chính quy có một dấu gạch chéo ngược để thoát khỏi ký tự đại tràng, do đó nó được hiểu là một ký tự chữ và không có ý nghĩa đặc biệt trong biểu thức. (Tôi đã sửa mã ở trên, nó có hai dấu gạch chéo ngược để thoát khỏi mẫu để đặt nó vào một chuỗi, tức là 'new Regex ('^\\: ') ', mã ban đầu của bạn là một kiểu kết hợp giữa một chữ regex và một regex string.) – Guffa

+0

Tôi không biết định dạng '/.../', chỉ có dấu gạch chéo ngược - cảm ơn vì đã giải thích. – neil

16

thử đơn giản với

myString = myString.replace(/:$/, ''); 

này sẽ loại bỏ : khi nó là ở phần cuối của chuỗi

+0

Ah, tôi đã có nó ở cuối nhưng quá nhiều dấu gạch chéo ... cảm ơn nhiều – neil

0

$ nhu cầu để được vào cuối regex để phù hợp với EOL.

/:$/

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