我已将this syllable counter script重新加入:
输入(Textarea 1)
i would appreciate
any help
at all
结果(Textarea 2)
11
Here is the existing code as a JSFiddle
我希望这个脚本能够:
.split('\n');
。输入(Textarea 1)
i would appreciate
any help
at all
结果(Textarea 2)
6
3
2
我对如何做到这一点非常感兴趣,并且非常感谢任何帮助或JSFiddle展示如何使用现有代码来实现这一目标。
对于任何可能有兴趣使用音节计数功能代码本身的人:它不是100%准确,并且在某些单词上失败但是给出了一个很好的总体思路。
答案 0 :(得分:1)
试试这个,让我知道你的需要是什么。
标注:
我创建了一个数组,它会将这些行存储起来var arrayOfLines = $("[name=set_" + $input + "]").val().match(/[^\r\n]+/g);
。
然后循环遍历该数组并完成您之前所做的操作,但是在每个数组条目上。然后将结果存储在tempArr中,并显示tempArr结果。
请参阅Fiddle
function $count_how_many_syllables($input) {
$("[name=set_" + $input + "]").keyup(function () {
var arrayOfLines = $("[name=set_" + $input + "]").val().match(/[^\r\n]+/g);
var tempArr = [];
var $content;
var word;
var $syllable_count;
var $result;
for(var i = 0; i < arrayOfLines.length; i++){
$content = arrayOfLines[i];
word = $content;
word = word.toLowerCase();
if (word.length <= 3) {
word = 1;
}
if (word.length === 0) {
return 0;
}
word = word.replace(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/, '')
.replace(/^y/, '')
.match(/[aeiouy]{1,2}/g).length;
$syllable_count = word;
$result = $syllable_count;
tempArr.push($result);
}
$("[name=set_" + $input + "_syllable_count]").val(tempArr);
});
}
(function($) {
$count_how_many_syllables("a");
})(jQuery);