Câu trả lời:
Sau đây sẽ làm nhưng chỉ thay thế một lần xuất hiện:
"string".replace('/', 'ForwardSlash');
Để thay thế toàn cục hoặc nếu bạn thích các biểu thức thông thường, bạn chỉ cần thoát dấu gạch chéo:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')nhưng đó là đối số không chuẩn chỉ hoạt động trong Firefox afaik.
"string".replace(/\//g, 'ForwardSlash');hoạt động nhưng loại bỏ / g khỏi cái này và nó không hoạt động.
/. Không có g, nó chỉ thay thế một thể hiện. Và nếu bạn loại bỏ, /gbạn phá vỡ hoàn toàn regex vì cuối cùng / là dấu phân cách cuối.
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!'
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"
Regex đề xuất /\//gkhông làm việc cho tôi; phần còn lại của dòng ( //g, replacement);) đã được nhận xét.
Đây là ý tưởng của Christopher Lincolns nhưng với mã chính xác:
function replace(str,find,replace){
if (find != ""){
str = str.toString();
var aStr = str.split(find);
for(var i = 0; i < aStr.length; i++) {
if (i > 0){
str = str + replace + aStr[i];
}else{
str = aStr[i];
}
}
}
return str;
}
Cách sử dụng ví dụ:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
Thay thế chuỗi toàn cầu Javascript là phức tạp không cần thiết. Hàm này giải quyết vấn đề đó. Có thể có một tác động hiệu suất nhỏ, nhưng tôi chắc chắn rằng nó không đáng kể.
Đây là một chức năng thay thế , trông sạch sẽ hơn nhiều, nhưng trung bình chậm hơn khoảng 25 đến 20 phần trăm so với chức năng trên:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}