如何使用 jQuery 将 HTML 文本区域转换为 word:count 键值数组?

Posted

技术标签:

【中文标题】如何使用 jQuery 将 HTML 文本区域转换为 word:count 键值数组?【英文标题】:How to transform an HTML textarea into a word:count key value array with jQuery? 【发布时间】:2012-09-20 08:01:27 【问题描述】:

我有一个带有未过滤用户输入的文本区域,其中包括换行符、空格、标点符号等。我想获取所有不同的小写单词,它们的出现,按出现排序。当 strip() 字符串是可变的时,我还没有找到一种直接的方法来提取单词。任何想法如何实现这一目标?

例如:

字1字2字1 Word1, ... word2 你好 ... . .你好。嗨

会变成

val array = 
    word1 : 3,
    word2 : 2,
    hello : 2,
       hi : 1
;

感谢您的帮助!

【问题讨论】:

实际上对象属性不能按名称排序。 【参考方案1】:

这是一种可能的解决方案:

var result = ,
    value = $("textarea").val(),
    res = value.match(/\b([a-z0-9]+)\b/g) || [];

for (var i = 0; i < res.length; i++) 
    result[res[i]] = (value.match(new RegExp(res[i], "ig")) || []).length;


console.log(result);​

演示: http://jsfiddle.net/mmFgE/

【讨论】:

【参考方案2】:

快速演示: http://jsfiddle.net/ZaQqb/

注意:您将需要添加更多特殊字符转换等。

代码:

var t = $('textarea').val();
console.log('Original: ' + t);

// 1. prepare your text
t = t.toLowerCase();
while(t.indexOf('.') != -1) t = t.replace('.', ' ');
while(t.indexOf(',') != -1) t = t.replace(',', ' ');
// TODO: add replcement for more spl characters here
while(t.indexOf('  ') != -1) 
    t = t.replace('  ', ' ');

console.log('Prepared: ' + t);

// 2. split by ' '
t = t.split(' ');

// 3. count
var counts = ;
for(var i in t) 
    counts[t[i]] = (counts[t[i]] == undefined) ? 1 : counts[t[i]]+1;


console.log(counts);

【讨论】:

以上是关于如何使用 jQuery 将 HTML 文本区域转换为 word:count 键值数组?的主要内容,如果未能解决你的问题,请参考以下文章

用于类似***的输入文本区域的JQuery?文本-​​>HTML

如何使用 HTML 和 Jquery 根据文本修复文本区域高度 [重复]

更改文本区域 jquery 内的 html 标记之间的文本

如何将此内容输出到文本区域?

如何从输入字段搜索文本到文本区域,以及如何使用 Jquery 标记匹配结果?

如何使用jQuery更改文本区域中的行数