Javascript replace() не заменяет все совпадения символов

Я хочу включить /Admin/ListOfMovies в _Admin_ListOfMovies с помощью replace().

var $id = id.replace('/', '_');

Похоже, что это только замена первого /. Как их заменить?

Спасибо за помощь.

4 ответа

Используйте регулярное выражение с флагом g.

var $id = id.replace(/\//g, '_');


Я ненавижу javascript replace, так как он всегда хочет регулярное выражение. Попробуй это

var $id=id.split("/").join("_");


Если вы не хотите использовать глобальный флаг, который будет выполнять функцию замены дважды в вашей строке, вы можете сделать этот метод, который является более конкретным и только заменяет его один раз; это также полезно знать для других ситуаций.

var $id = id.replace(/\/(\w+)\/(\w+)/, '_$1_$2');


function strReplace( str ) {
if( typeof str === 'string' ) {
 return text.replace( /[\/]/g, function( match, pos, originalText ) {
 if( match === '/' ){
 return '_';
 }
 });
}
return '';
}

console.log( strReplace( /Admin/ListOfMovies ) );

licensed under cc by-sa 3.0 with attribution.