我正在尝试制作一个程序,它会在一个短语中计算最多3个单词,并计算相同单词的重复次数(最多3个)。
编辑:
我的问题是:
当我输入特殊字母时,žđč
程序不能很好地扩展,并且不能正确计算单词。
JSFiddle:Link
示例:
我们有这样的话:
Tom is super and epic.
Tom is super gg.
Tom is super.
Tom is not.
Tom is.
输出应为:
Tom is super - 3
(汤姆的重复次数超级)(前3个字),3个是“汤姆超级”的重复次数
“Tom is super and epic”不在“等式”中的原因是5个单词,我们只拿3个,而“Tom is not”不在那里,因为它只重复一次。 因此,程序只需要多次使用的单词,最多可以使用3次。
我的代码如下:
function parse() {
alert('hi');
s = document.getElementById('inputText').value;
s = s.replace(/[\.\!\?:;,]+/g, '');
a = s.match(/\b([\w+\s*\w*]+)\b(?=.*\b\1\b)/g);
a = a.filter(function(n){ return n.length > 1 });
var res = document.getElementById('res');
var ul = document.createElement('ul');
var result = new Array();
for (var i = 0; i < a.length; i++) {
if (result[a[i]] == null) {
result[a[i]] = 1;
} else {
result[a[i]]++;
}
};
for(var key in result) {
var li=document.createElement('li');
ul.appendChild(li);
li.innerHTML = key + ' ---> ' + result[key];
}
res.appendChild(ul);
}
和html:
<html>
<head>
<title></title>
</head>
<body>
<textarea id="inputText"></textarea>
<div id="res">
</div>
<input type="button" onClick="parse()" />
</body>
</html>
如果带有3个单词的模式只重复一次,那么结果会被忽略,它应该运行检查重复多少次作为前2个单词,如果2个单词的模式只重复一次,则运行只用第一个单词检查。
谢谢,
迈克尔