Javascript 将文本拆分为单词

Javascript 将文本拆分为单词,javascript,jquery,html,split,Javascript,Jquery,Html,Split,我有这个HTML数据 字1 字2 字3 我想获取div元素中的文本 这是我的JavaScript代码: var text=document.getElementById('sample'); var text_content=jQuery(text).text(); console.debug(文本内容); 控制台记录word1 word2 word3 我想逐字逐句地写,所以我使用了split方法: var text\u content\u array=text\u content

我有这个HTML数据


字1 字2 字3

我想获取
div
元素中的文本

这是我的JavaScript代码:

var text=document.getElementById('sample');
var text_content=jQuery(text).text();
console.debug(文本内容);
控制台记录
word1 word2 word3

我想逐字逐句地写,所以我使用了
split
方法:

var text\u content\u array=text\u content.split(“”);
调试(文本内容数组);
控制台记录
[“word1 word2 word3”]
。字符串没有标记化

我尝试了此代码,但没有成功:

var text\u content\u array=text\u content.split(“\n\r\t\b\f”);
调试(文本内容数组);

如何从字符串中获取单词数组?

您可以使用trim方法和regex获取数组

类似于:
console.log(text\u content.trim().split(/[\s,]+/)

这是jsbin和您的代码。

试试这个

var text_content_array = text_content.split(/ |\b\s+/g);
试试这个

var a = $("#sample").text().trim();
var b = a.replace(/\s+/g,',');
var c = b.split(',')
alert(c);

换行符和不间断空格将与字符串
不匹配,但它们将与正则表达式模式
\s

从文本中收集所有单独单词的最简单方法是使用
match()
查找所有非空格字符序列(
\S
)。此方法避免了在拆分字符串之前修剪字符串的需要。像这样

var text = document.getElementById('sample');
var text_content_array = jQuery(text).text().match(/\S+/g);
console.debug(text_content_array);
输出 试试这个:-

var text = document.getElementById('sample');
        var text_content = jQuery(text).text();

        var text_content_array = new Array(); 
        text_content_array = text_content.split(" ");
        for (var i = 0; i < text_content_array.length; i++) {
            if (text_content_array[i].trim().length > 0)
                console.debug(text_content_array[i]);
        }
var text=document.getElementById('sample');
var text_content=jQuery(text).text();
var text_content_array=新数组();
text\u content\u array=text\u content.split(“”);
对于(变量i=0;i0)
调试(文本内容数组[i]);
}

希望这将对您有所帮助。

您的代码运行良好,拆分将返回一个单词数组。检查以上内容jsfiddle@Bsienn:您的JSFIDLE与OP的代码非常不同。您使用
text.innerText
而不是
jQuery(text).text()
,这会给出完全不同的结果。您还使用了
text\u content.trim().split(“”)
而不是
text\u content.split(“”)
。但您的版本仍然显示
[“alyssa”、“enganio”、“gono”]
,前两个后面有一个空格words@Borodin我本该多清理一点的,我赶时间。上面这把小提琴不是我的,但它是正确的版本。我会解释的。
.text()
返回代码中的文本加空格和新行、缩进等。。因此,在包含新行的字符串上执行split不会起作用,
trim()
.innerText
解决了所有这些问题,只返回干净的文本。然后是神奇的
.split(“”)
,瞧。我们可以走了。@Eliyyahu:我建议你看看我想知道为什么你要把所有的空格序列都转换成逗号,然后用逗号分开?它的效果与只对空格序列进行拆分相同,没有中间值variable@Borodin所有的空格序列都不会转换为逗号,而是转换为一个逗号:D,这样我们就只有一个逗号来分隔实际文本。使用
var c=a.split(/\s+/)可以实现同样的效果
如果你使用这个:var c=a.split(/\s+/),你会得到c的值作为'ALYSSAUNDEFINEDANGIONDEFINEDGONO',现在不可能分离字符串。
split
返回一个字符串数组,我不明白你怎么会认为它返回了这样一个字符串。
未定义的子字符串从何而来,以及为什么数组被压缩成单个字符串?这会产生
[“\n\n\n\n alyssa”、“enganio”、“gono”和“]”的结果。
这可以通过在正则表达式中添加相对转义来解决。无论如何,当你试图帮助一个人时,收到否决票是很烦人的。我确信,当你寻求帮助时,收到误导性的、未经测试的、有故障的代码也是同样烦人的。你的建议还有很长的路要走,你甚至不知道你的正则表达式模式匹配什么。请说明如何通过添加相关转义来修复解决方案。
var text = document.getElementById('sample');
        var text_content = jQuery(text).text();

        var text_content_array = new Array(); 
        text_content_array = text_content.split(" ");
        for (var i = 0; i < text_content_array.length; i++) {
            if (text_content_array[i].trim().length > 0)
                console.debug(text_content_array[i]);
        }