【问题标题】:I wrote code to replace chars in the string on javascript but it doesn't work [duplicate]我编写了代码来替换javascript字符串中的字符,但它不起作用[重复]
【发布时间】:2019-07-18 20:55:39
【问题描述】:

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

我是js新手,谁能解释一下为什么这段代码不起作用?

【问题讨论】:

    标签: javascript


    【解决方案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'));

    【讨论】:

    • 或更短的正则表达式方法:P
    • @NickParsons,当然,但我认为,op 想在没有的情况下学习。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 2019-02-16
    • 2011-09-07
    • 2017-07-25
    • 2013-05-09
    • 1970-01-01
    相关资源
    最近更新 更多