2010-12-30 96 views

Trả lời

174

Sau đây sẽ làm gì nhưng chỉ sẽ thay thế một điều xảy ra:

"string".replace('/', 'ForwardSlash'); 

Đối với một sự thay thế toàn cầu, hoặc nếu bạn thích biểu thức thông thường, bạn chỉ cần có để thoát khỏi dấu gạch chéo:

"string".replace(/\//g, 'ForwardSlash'); 
+3

Đoạn mã đầu tiên không thay thế toàn cục. Không quá chắc chắn làm thế nào để làm thay thế toàn cầu cách phi regex. – BoltClock

+0

Ah đúng, tôi đã không thử nó với nhiều hơn một dấu gạch chéo. Nó có thể được thực hiện với '" string ".replace ('/', 'ForwardSlash', 'g')' nhưng đó là đối số không chuẩn mà chỉ hoạt động trong Firefox afaik. – Seldaek

+1

'" chuỗi ".replace (/ \ // g, 'ForwardSlash');' hoạt động nhưng xóa/g từ này và nó không hoạt động. – johntrepreneur

22

Sử dụng ký tự regex với công cụ sửa đổi g và thoát dấu gạch chéo tới bằng dấu gạch chéo ngược để nó không xung đột với dấu phân cách.

var str = 'some // slashes', replacement = ''; 
var replaced = str.replace(/\//g, replacement); 
3

Đây có phải là những gì bạn muốn không?

'string with/in it'.replace(/\//g, '\\'); 
8

Nếu không sử dụng regex (mặc dù tôi sẽ chỉ làm điều này nếu chuỗi tìm kiếm là đầu vào của người dùng):

var str = 'Hello/ world/ this has two slashes!'; 
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!' 
0
var str = '/questions'; // input: "/questions" 
while(str.indexOf('/') != -1){ 
    str = str.replace('/', 'http://stackoverflow.com/'); 
} 
alert(str); // output: "http://stackoverflow.com/questions" 

Regex được đề xuất /\//g không hoạt động đối với tôi; phần còn lại của dòng (//g, replacement);) đã được nhận xét.

+1

Xin lưu ý rằng tôi không chắc chắn về hiệu suất của việc so sánh giải pháp tách/ghép mảng được đề xuất như thế nào. –

+0

... vấp phải điều này ... hãy thử IDE khác nhau bằng cách sử dụng tô sáng cú pháp thông minh hơn. Đừng dựa vào màu sắc của trình soạn thảo mã của bạn, nhưng hãy tin vào sức mạnh của các trình phân tích cú pháp stateful đúng cách mã hóa mã của bạn khi chạy. – soletan

3

Điều này đã làm việc cho tôi khi chuyển "//" thành chỉ "/".

str.replace(/\/\//g, '/'); 
1

Xin chỉnh sửa nhỏ trong tập lệnh trên .. ở trên tập lệnh bỏ qua ký tự đầu tiên khi hiển thị đầu ra.

function stripSlashes(x) 
{ 
var y = ""; 
for(i = 0; i < x.length; i++) 
{ 
    if(x.charAt(i) == "/") 
    { 
     y += ""; 
    } 
    else 
    { 
     y+= x.charAt(i); 
    } 
} 
return y; 
} 
2

Bạn cần phải quấn dấu gạch chéo về phía trước để tránh các sự cố trình duyệt chéo hoặc // nhận xét.

str = 'this/that and/if'; 

var newstr = str.replace(/[/]/g, 'ForwardSlash'); 
Các vấn đề liên quan