jquery从textarea中获取随机单词

Posted

技术标签:

【中文标题】jquery从textarea中获取随机单词【英文标题】:Jquery get random words from textarea 【发布时间】:2012-12-03 07:18:26 【问题描述】:

我的问题很简单,但我不知道该怎么做。

我有一个带有一些文本的文本区域,我想从文本中获取 5 个随机单词并将它们放入另一个输入字段(自动)。我不想说具体的话。随机5个字。而已。谢谢!

例子:

“Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim 广告 minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 偏执。 Exceptioneur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labourum。”

包含何时写入此文本的输入字段让我们说:ipsum、amet、veniam、velit、deserunt。

【问题讨论】:

这很简单-> FIDDLE 好的,它在jsfiddle.net/cwrxV 中工作,但是当我尝试放入我的网站时它不会工作!有什么问题,请帮我弄清楚。感谢以前的帖子。我的 html 代码等于我粘贴在 jsfiddle 中的代码,我从 、、外部 js 文件加载 jquery 代码。结果是一样的...:/ 【参考方案1】:

这是我对工作流程的建议:

    从文本区域获取单词 删除重复项 迭代数组获取单词并将其从数组中删除(避免重复)

示例代码:

var text = "Lorem ipsum ......";
var words = $.unique(text.match(/\w+/mg));
var random = [];

for(var i=0; i<5; i++) 
    var rn = Math.floor(Math.random() * words.length);
    random.push( words[rn]);
    words.splice(rn, 1);


alert( random ):

jsFiddle 中的工作示例

【讨论】:

【参考方案2】:

这应该可行:

var content = $("#myTextarea").val(),
    words = content.split(" ");

var randWords = [],
    lt = words.length;

for (var i = 0; i < 5; i++)
    randWords.push(words[Math.floor(Math.random() * lt)]);

$("#otherField").val(randWords.join(" "));

编辑:为防止重复,您可以使用以下内容:

var nextWord;
for (var i = 0; i < 5; i++)

    nextWord = words[Math.floor(Math.random() * lt)];
    if (("|" + randWords.join("|") + "|").indexOf("|" + nextWord  + "|") != -1)
    
        i--;
        continue;
    
    randWords.push(nextWord);

【讨论】:

您应该检查数组是否已经包含该字符串,使用 indexOf 已修改代码以防止重复。 使用文本而不是 val 输出 div【参考方案3】:

更短:

var str = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt.';

function rWords( t ) 
    for ( var i = 5, s = t.match( /(\d|\w|')+/g ), r = [] ; i-- ; r.push( s[ Math.random() * s.length | 0 ] ) );
    return r.join( ', ' ).toLowerCase();


console.log( rWords( str ) );
> lorem, eiusmod, elit, dolor, do

【讨论】:

以上是关于jquery从textarea中获取随机单词的主要内容,如果未能解决你的问题,请参考以下文章

用 jQuery 同步 CKEditor 和 TEXTAREA

如何在textarea中获取选定的文本? [复制]

使用 jQuery(兼容 IE6)在 textareas 中捕获“光标位置更改”事件

从字符串中获取随机的单词序列?

Ajax jQuery serialize() & serializeArray() textarea 未以 Django 形式提交

如何随机从数组中获取随机字符串项,并将字符串单词的每个字符随机放入li标签中