[JavaScript练习]儿童黑话 pig latin游戏
儿童黑话也叫 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游戏相关推荐
- python十点半游戏代码_Python实现Pig Latin小游戏实例代码
前言: 本文研究的主要是Python实现pig Latin小游戏的简单代码,具体介绍如下. Pig Latin是一个语言游戏. 步骤: 1.让用户输入一个英文单词 2.确保用户输入一个有效单词 3.将 ...
- 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 ...
- (codewars)Simple Pig Latin
题目 题目链接 Move the first letter of each word to the end of it, then add "ay" to the end of t ...
- 【Codewars】Simple Pig Latin
Codewars里的 5kyu Kata. 题目说明: Move the first letter of each word to the end of it, then add "ay&q ...
- Python版儿童识字游戏源代码,结合植物大战僵尸和儿童识字的小游戏,含学习模式和娱乐模式
Python版儿童识字游戏源代码,结合植物大战僵尸和儿童识字的小游戏,含学习模式和娱乐模式. 娱乐模式下,僵尸会头顶不同的汉字,此时屏幕会提示要消灭的汉字,移动豌豆消灭对应汉字的僵尸,如果攻击非提示汉 ...
- javascript做游戏_我用JavaScript构建了一个角色扮演游戏。 你也可以 这是如何做。...
javascript做游戏 by Robert Skalko 罗伯特·斯科尔科(Robert Skalko) 我用JavaScript构建了一个角色扮演游戏. 你也可以 这是如何做. (I built ...
- html5+canvas+javascript开发打灰机小游戏
今天不出太阳,整个人都有点颓废.为了我的大前端计划,不得已找点代码练练手. 打灰机是很早就流行的手机游戏,那时候智能手机还很贵,我还是学生一枚.现在出来工作了,发现别人写的打灰机游戏,然后游戏逻辑很差 ...
- JavaScript队列结构——击鼓传花游戏
JavaScript队列结构--击鼓传花游戏 //队列类 function Queue(){this.items = []//将元素添加到队列中Queue.prototype.enqueue = fu ...
- JavaScript | 益智类数字棋牌小游戏,无游戏框架,浏览器直接运行JavaScript(js)小游戏【源码+解析】
游戏界面 曾几何时想有一款自己编写的游戏,通过不断学习,终于掌握了一点JavaScript基础,捣鼓了一个益智类的数字棋牌游戏,没有使用任何游戏框架,就简单使用HTML做布局,CSS做动画,JavaS ...
最新文章
- 3D打印神经电极有助于将大脑连接到电脑
- 前台获取后台数据写法%#%..
- 安装CocoaPods
- redis3.0.2安装
- bootstrap学习(一)栅格、布局
- (74)信号发生器DDS三角波设计(二)(第15天)
- TeamViewer可以实现国际连接吗?
- Python利用SMTP发邮件
- oracle中的job重要吗,关于Oracle的job的一些总结
- delphi 侧边栏_Delphi 开发工具各版本官方下载地址
- 观察者模式和模拟wow插件的例子
- 8700K + z370 安装黑苹果 Mojave
- 在3小时内学习Kubernetes:编排容器的详细指南
- 【生活感悟】达克效应--要自信不要自负,越努力越幸运
- Three导入dae格式模型实例
- 【最新】2019年最新青甘大环线攻略收藏版!
- 电脑软件连接ABB机器人控制柜
- 基于Java+Swing实现餐厅点餐系统
- 亚马逊、OZON、敦煌、MANO等跨境电商平台测评养号需要注意什么?
- mysql分布式主键_技术分享 | 优化 InnoDB 的主键