2011-04-16 61 views
15

有没有JavaScript库计算一个单词中的音节数?如何计数?如何计算javascript中一个单词中的音节数?

感谢

编辑

感谢Sydenam和ZOZO有用的信息和可能的答案。

我发现了代码Pesto at this forum,但它在Ruby中。其简明版本之一如下:

def new_count(word) 
    word.downcase! 
    return 1 if word.length <= 3 
    word.sub!(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/, '') 
    word.sub!(/^y/, '') 
    word.scan(/[aeiouy]{1,2}/).size 
end 

这看起来简短但复杂。你能把这个函数转换成javascript吗? 再次感谢您。

回答

2

你可以看看这个:AJAX Syllable Calendar

+0

不是一个JavaScript解决方案本身,使用Ajax跟一个PHP脚本。 – booyaa 2011-12-20 19:29:30

2

嗯......你把语法书,并开始阅读是否由字母串字母的规则有相匹配,然后添加一个+1到一个计数器。由于规则因语言而异,所以我不能告诉你如何去做。我为罗马尼亚做过......但我怀疑它会帮助你。

28

翻译成JavaScript:

function new_count(word) { 
 
    word = word.toLowerCase();          //word.downcase! 
 
    if(word.length <= 3) { return 1; }        //return 1 if word.length <= 3 
 
    word = word.replace(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/, ''); //word.sub!(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/, '') 
 
    word = word.replace(/^y/, '');         //word.sub!(/^y/, '') 
 
    return word.match(/[aeiouy]{1,2}/g).length;     //word.scan(/[aeiouy]{1,2}/).size 
 
} 
 

 
console.log(new_count('she')); 
 
console.log(new_count('spain')) 
 
console.log(new_count('softball')) 
 
console.log(new_count('contagion'))

+0

谢谢你把它放在一起!正是我需要的! – 2014-05-07 05:32:43

+3

也许有一天@dylan会接受它...... – artfulhacker 2014-05-07 11:05:04

+1

为什么word.length <= 3意味着1个音节? “艾米”怎么样? – Kay 2015-10-14 02:38:15

相关问题