#javascript
#javascript
Вопрос:
Я попытался создать функцию изменения символов для строк, она предполагает изменение всех «-» на «_», и она делает это только для первого символа и оставляет остальные. Если бы кто-нибудь мог объяснить, это было бы ужасно.
function kebabToSnake(str) {
var idNum = str.length;
for(var i = 0; i <= idNum; i ) {
var nStr = str.replace("-", "_");
}
return nStr;
}
Ответ №1:
var nStr = str.replace("-", "_");
Итак, на каждой итерации вы заменяете первый найденный -
символ в исходной строке, а не строку, из которой вы уже заменили символы. Вы можете либо вызвать .replace
только одну переменную, которую вы переназначаете:
function kebabToSnake(str) {
var idNum = str.length;
for(var i = 0; i < idNum; i ) {
str = str.replace("-", "_");
}
return str;
}
console.log(kebabToSnake('ab-cd-ef'));
(обратите внимание, что вы должны выполнять итерацию от 0
к str.length - 1
, а не от 0
к str.length
)
Или, что гораздо, гораздо более элегантно, используйте глобальное регулярное выражение:
function kebabToSnake(str) {
return str.replace(/-/g, '_');
}
console.log(kebabToSnake('ab-cd-ef'));
Комментарии:
1. Спасибо, теперь я вижу, что я напутал.