在下面的代码中,我尝试创建一个简单的"翻译器"在制作语言和英语之间。如果它正常工作,请致电
translate.toEnglish("hopeloplopo")
将返回hello
致电translate.toLanguage("hello")
将返回hopeloplopo
基本上,我希望它用字母+ op替换每个非元音,反之亦然to toEnglish
这是目前发生的事情:
translate.toLanguage("hello")
返回
"OPello"
translate.toEnglish("hopeloplopo")
返回undefined
请帮助,谢谢!
var vowels = ['a', 'e', 'i', 'o', 'u']
var translate = {
toEnglish:function(words) {
function strip(text) {
text = text.replace("OP", "").replace("op", "");
if (text.toLowerCase().indexOf("op") >= 0) strip(text)
else return text;
}
if (words.toLowerCase().indexOf("op") >= 0) strip(words)
else return words;
},
toLanguage:function(words) {
for (var i=0;i<words.length; i++) {
if ($.inArray(words[i], vowels)<0) {
var split = words.split(words[i]).join("OP");
return split;
}
else {
return words;
}
}
},
}
答案 0 :(得分:1)
我不确定你的问题是什么,所以我只是写了我怎么做你所描述的
var translate = (function () {
function toEnglish(str) {
return str.replace(/(?=[a-z])([^aeiou])op/gi, '$1');
}
function toLanguage(str) {
return str.replace(/(?=[a-z])([^aeiou])/gi, function ($0, $1) {
return $1 + ($1 === $1.toUpperCase() ? 'OP' : 'op');
});
}
return {
toEnglish: toEnglish,
toLanguage: toLanguage
};
}());
然后
translate.toLanguage('Hello'); // "HOPeloplopo"
translate.toEnglish('HOPeloplopo'); // "Hello"