Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中使用空格拆分字符串?_Javascript_Tokenize - Fatal编程技术网

在Javascript中使用空格拆分字符串?

在Javascript中使用空格拆分字符串?,javascript,tokenize,Javascript,Tokenize,我需要一个标记器,给定一个在单词之间有任意空格的字符串,它将创建一个没有空子字符串的单词数组 例如,给定一个字符串: " I dont know what you mean by glory Alice said." 我使用: str2.split(" ") 这还会返回空的子字符串: ["", "I", "dont", "know", "what", "you", "mean", "by", "glory", "", "Alice", "said."] 如何从数组中筛选出空字符串?您甚至不

我需要一个标记器,给定一个在单词之间有任意空格的字符串,它将创建一个没有空子字符串的单词数组

例如,给定一个字符串:

" I dont know what you mean by glory Alice said."
我使用:

str2.split(" ")
这还会返回空的子字符串:

["", "I", "dont", "know", "what", "you", "mean", "by", "glory", "", "Alice", "said."]

如何从数组中筛选出空字符串?

您甚至不需要筛选,只需使用以下正则表达式进行拆分:

"   I dont know what you mean by glory Alice said.".split(/\b\s+/)

请参阅
过滤器
方法


在使用拆分之前,应修剪字符串

var str = " I dont know what you mean by glory Alice said."
var trimmed = str.replace(/^\s+|\s+$/g, '');
trimmed = str.split(" ")

我建议
.match

str.match(/\b\w+\b/g);
这将匹配单词边界之间的单词,因此所有空格都不匹配,因此不包括在结果数组中

 str.match(/\S+/g) 
返回非空格序列的列表
[“I”、“not”、“know”、“what”、“you”、“mean”、“by”、“glori”、“Alice”、“said.”]
(注意,这包括“said.”中的点)

返回所有单词的列表:
[“我”、“不”、“知道”、“什么”、“你”、“意思”、“by”、“荣耀”、“爱丽丝”、“说”]


我认为出现空子字符串是因为存在多个空格。您可以在for循环中使用replace()将多个空格替换为单个空格,然后使用split()将程序拆分为单个空格,如下所示:

//从div获取完整程序
var程序=document.getElementById(“ans”).textContent;
//删除多个空格
var res=program.replace(“,”);

for(i=0;i Off-topic:regex中的
\b
是什么意思?匹配单词边界,如空格、换行符、标点符号或字符串结尾()。可能不是完美的regex,但在那个例子中它可以工作。@Mustafa是的,我知道。但这只是一个好奇。我喜欢regex,但如何解释“,”(逗号,空格)使用:str3=str2.match(/\b\w+\b/g);结果:>>>str3[“Humpty”,“Dumpty”,“微笑”,“轻蔑”,“当然”,“你”,“不”,“直到”,“我”,“告诉”,“你”,“我”,“我的意思”,“theres”,“a”,“nice”,“knock”,“down”,“argument”,“for”,“you”]那么w+匹配也可以“-”@dokondr:什么算是单词字符?如果除了空格以外都是,你可能只需要使用
[^]
而不是
\w
。回答得好。供其他人参考,
/S+//code>匹配非空白字符组,而
/w+//code>匹配字母数字+下划线字符组。这就是句点(
)字符在一个字符组中匹配,而在另一个字符组中不匹配的原因。
 str.match(/\w+/g)