计算一个短语的前三个单词

时间:2014-06-04 16:31:14

标签: javascript

我正在尝试制作一个程序,它会在一个短语中计算最多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个单词的模式只重复一次,则运行只用第一个单词检查。

谢谢,

迈克尔

0 个答案:

没有答案