javascript - 创建一个将字符串作为参数并返回字符串的编码 (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。
解决方案
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"))
推荐阅读
- ios - 您可以在浏览器中创建一个 Deeplink 以在 Instagram 中打开“分享到故事”吗?
- android - 如何显示来自不同 ArrayLists 的内容
- java - 在过滤器之前根据请求设置跟踪 id
- ios - 在循环图像之间停止的逐帧动画
- r - 将几个小时的列重塑为键和值
- asp.net-core - 多重身份验证无法与 ASP.NET Core 2.1 Identity 一起正常工作
- excel - 打开文件夹中的所有word文档并将内容复制并粘贴回excel
- ansible - Ansible 脚本模块在标准输出中添加前导换行符,可能在使用 sudo 时。为什么?
- javascript - 当用户在单选按钮上做出选择时,是否有一个功能可以根据按钮的选择自动显示更多字段
- java - 安装 Java 后,我无法在根文件夹中“npm start”我的反应包