我写了代码来替换javascript字符串中的char,但是它不起作用

时间:2019-02-25 12:41:09

标签: javascript

function kebabToSnake(string){
  var replacedString = string;
  for(i = 0; i < string.length; i++){
    if(string[i] === "-"){
       replacedString[i] = "_";
    }
  }
  return replacedString;
}

我是js的新手,有人可以解释为什么此代码不起作用吗?

1 个答案:

答案 0 :(得分:1)

字符串是不可变的,这意味着您不能将字符分配给字符串的位置。

您可以改用数组,并且只保留所需的字符。稍后,您需要将数组连接到字符串。

function kebabToSnake(string) {
    var replacedString = Array.from(string);
    for (i = 0; i < string.length; i++){
        if (string[i] === "-"){
            replacedString[i] = "_";
        }
    }
    return replacedString.join('');
}

console.log(kebabToSnake('abc-def-ghi'));

通过使用Array.from的映射参数来缩短方法。

function kebabToSnake(string) {
    return replacedString = Array
        .from(string, c => c === '-' ? '_' : c)
        .join('');
}

console.log(kebabToSnake('abc-def-ghi'));

最后是regular expression,它查找单个减号/-/,并用下划线g替换所有(对于全局标志为'_' –全局)。

function kebabToSnake(string) {
    return string.replace(/-/g, '_');
}

console.log(kebabToSnake('abc-def-ghi'));