儿童黑话也叫 Pig Latin,是一种英语语言游戏。 规则如下:

- 如果单词以辅音开头,就把第一个辅音字母或第一组辅音簇移到单词的结尾,并在后面加上 ay。

- 如果单词以元音开头,只需要在结尾加上 way


请把传入的字符串根据上述规则翻译成儿童黑话并返回结果。 输入的字符串一定是一个小写的英文单词。例子如下:

function translatePigLatin(str) {return str;
}translatePigLatin("consonant");

首先处理第一个字母就是元音字母的情况,用charAt()获取到之后判断,是的话直接str+="way"。

function translatePigLatin(str) {const regex = /[aeiou]+/; //匹配元音字母if (str.charAt(0).match(regex)) {//第一个就是元音字母的情况return (str += "way");}return str;
}translatePigLatin("consonant");

接下来就是单词以辅音字母开头,一个单词可能包括多个元音,我们只要获取第一个元音字母的索引就能把单词拆成两个子串。我用的是笨办法,for循环遍历单词每个字母直到找到元音字母后跳出循环。

function translatePigLatin(str) {const regex = /[aeiou]+/; //匹配元音字母if (str.charAt(0).match(regex)) {//第一个就是元音字母的情况return (str += "way");}let index = 0;for (let i = 1; i < str.length; i++) {//遍历字符串找到第一个元音字母的索引if (str.charAt(i).match(regex)) {index = i;break;}}let res = str.substring(index) + str.substring(0, index) + "ay";console.log(res);return res;
}translatePigLatin("consonant");

顺便分享一下别人的做法,是使用了函数式编程,代码非常简短清晰:

function translatePigLatin(str) {let consonantRegex = /^[^aeiou]+/;let myConsonants = str.match(consonantRegex);return myConsonants !== null? str.replace(consonantRegex, "").concat(myConsonants).concat("ay"): str.concat("way");
}translatePigLatin("consonant");

他和我相反,使用的正则表达式是匹配以辅音字母开头的单词,直到遇到元音字母停止。使用三元表达式判断匹配结果是不是空,为空说明以元音字母开头,直接连接way,不为空则把开头的连续辅音字母移到单词最后再连接ay。

还有另一个思路和我差不多但代码非常精简的:

function translatePigLatin(str) {if (str.match(/^[aeiou]/)) return str + "way";const consonantCluster = str.match(/^[^aeiou]+/)[0];return str.substring(consonantCluster.length) + consonantCluster + "ay";
}translatePigLatin("consonant");

相比于我的for循环遍历找第一个元音字母,他用的正则表达式更加简单高效,match方法返回的数组第一项就是匹配到的辅音字母串,接着取子串,把辅音字母串移到单词最后再连接ay。

总结:这题没什么难度,主要是我对正则表达式生疏了,看到这个题复习一下,顺便分享一下想法和他人的高效做法。

[JavaScript练习]儿童黑话 pig latin游戏相关推荐

  1. python十点半游戏代码_Python实现Pig Latin小游戏实例代码

    前言: 本文研究的主要是Python实现pig Latin小游戏的简单代码,具体介绍如下. Pig Latin是一个语言游戏. 步骤: 1.让用户输入一个英文单词 2.确保用户输入一个有效单词 3.将 ...

  2. JavaScript 'Pig latin is cool'=='igPay atinlay siay oolcay'

    Description: Move the first letter of each word to the end of it, then add 'ay' to the end of the wo ...

  3. (codewars)Simple Pig Latin

    题目 题目链接 Move the first letter of each word to the end of it, then add "ay" to the end of t ...

  4. 【Codewars】Simple Pig Latin

    Codewars里的 5kyu Kata. 题目说明: Move the first letter of each word to the end of it, then add "ay&q ...

  5. Python版儿童识字游戏源代码,结合植物大战僵尸和儿童识字的小游戏,含学习模式和娱乐模式

    Python版儿童识字游戏源代码,结合植物大战僵尸和儿童识字的小游戏,含学习模式和娱乐模式. 娱乐模式下,僵尸会头顶不同的汉字,此时屏幕会提示要消灭的汉字,移动豌豆消灭对应汉字的僵尸,如果攻击非提示汉 ...

  6. javascript做游戏_我用JavaScript构建了一个角色扮演游戏。 你也可以 这是如何做。...

    javascript做游戏 by Robert Skalko 罗伯特·斯科尔科(Robert Skalko) 我用JavaScript构建了一个角色扮演游戏. 你也可以 这是如何做. (I built ...

  7. html5+canvas+javascript开发打灰机小游戏

    今天不出太阳,整个人都有点颓废.为了我的大前端计划,不得已找点代码练练手. 打灰机是很早就流行的手机游戏,那时候智能手机还很贵,我还是学生一枚.现在出来工作了,发现别人写的打灰机游戏,然后游戏逻辑很差 ...

  8. JavaScript队列结构——击鼓传花游戏

    JavaScript队列结构--击鼓传花游戏 //队列类 function Queue(){this.items = []//将元素添加到队列中Queue.prototype.enqueue = fu ...

  9. JavaScript | 益智类数字棋牌小游戏,无游戏框架,浏览器直接运行JavaScript(js)小游戏【源码+解析】

    游戏界面 曾几何时想有一款自己编写的游戏,通过不断学习,终于掌握了一点JavaScript基础,捣鼓了一个益智类的数字棋牌游戏,没有使用任何游戏框架,就简单使用HTML做布局,CSS做动画,JavaS ...

最新文章

  1. 3D打印神经电极有助于将大脑连接到电脑
  2. 前台获取后台数据写法%#%..
  3. 安装CocoaPods
  4. redis3.0.2安装
  5. bootstrap学习(一)栅格、布局
  6. (74)信号发生器DDS三角波设计(二)(第15天)
  7. TeamViewer可以实现国际连接吗?
  8. Python利用SMTP发邮件
  9. oracle中的job重要吗,关于Oracle的job的一些总结
  10. delphi 侧边栏_Delphi 开发工具各版本官方下载地址
  11. 观察者模式和模拟wow插件的例子
  12. 8700K + z370 安装黑苹果 Mojave
  13. 在3小时内学习Kubernetes:编排容器的详细指南
  14. 【生活感悟】达克效应--要自信不要自负,越努力越幸运
  15. Three导入dae格式模型实例
  16. 【最新】2019年最新青甘大环线攻略收藏版!
  17. 电脑软件连接ABB机器人控制柜
  18. 基于Java+Swing实现餐厅点餐系统
  19. 亚马逊、OZON、敦煌、MANO等跨境电商平台测评养号需要注意什么?
  20. mysql分布式主键_技术分享 | 优化 InnoDB 的主键

热门文章

  1. WRF后处理/Python处理nc数据与可视化/极坐标网格绘制(Cartopy、netcdf4)——以北极雪水当量数据为例
  2. 3D游戏中的数学运用
  3. jquery实现图片上传
  4. openresty 支持php,从零搭建php环境-openresty
  5. 一个成功软件测试项目的经验(转载)
  6. vnpy量化回测怎么做?一文带你了解
  7. HasMap简单实现
  8. pandas学习之pandas基础
  9. 计算机专业java餐厅点餐系统,Java实现餐厅点餐系统的实例代码.pdf
  10. va_start 用法