在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)