首页 > 解决方案 > 创建一个将字符串作为参数并返回字符串的编码 (h4ck3r 5p34k) 版本的函数

问题描述

 function hackerSpeak(str){
    for (var i=0; i <str.length;i++)
      {
    if (str[i]="a")
       {str[i].replace("a",4)}
    else if (str[i]="e")
        {str[i].replace("e",3)}
    else if (str[i]="i") 

     {str[i].replace("i",1)}
    else if (str[i]="o")
          {str[i].replace("o",0)}
    else if (str[i]="s")
          {str[i].replace("s",5)}
    else {}
        }
    return str
  }

  document.write (hackerSpeak("become a coder"))

输出与输入相同,使用控制台找不到问题。为了正常工作,该函数应将所有 'a's 替换为 4,'e's 替换为 3,'i's 替换为 1,'o's 替换为 0,以及 's's 替换为 5。

标签: javascript

解决方案


String#replace不能在原地工作(它不会改变原始字符串),但会返回一个新字符串。

我建议您继续使用替换功能,但也尝试一些正则表达式:)

const dictionary = {
   a: 4,
   e: 3,
   i: 1,
   o: 0,
   s: 5,
};

function hackerSpeak(str) {
  return str.replace(/[aeios]/gi, (m) => dictionary[m]); 
  // it will return new, modified string
}

document.write(hackerSpeak("become a coder"))


推荐阅读