在Javascript中使用空格分割字符串

Split a string using whitespace in Javascript?

本文关键字:空格 分割 字符串 Javascript      更新时间:2023-09-26

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

例如,给定一个字符串:

" 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+/)
 str.match(/'S+/g) 

返回非空间序列["I", "dont", "know", "what", "you", "mean", "by", "glory", "Alice", "said."]的列表(注意,这包括"sad."中的点)

 str.match(/'w+/g) 

返回所有单词的列表:["I", "dont", "know", "what", "you", "mean", "by", "glory", "Alice", "said"]

match()上的文档

在使用split之前应该修剪字符串。

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

这将匹配单词边界之间的单词,因此所有空格都不匹配,因此不会包含在结果数组中。

参见filter方法

http://www.hunlock.com/blogs/Mastering_Javascript_Arrays#quickIDX13

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

// getting full program from div
var program = document.getElementById("answers").textContent;
//removing multiple spaces
var res = program.replace("  ", " ");
for (i = 0; i <= program.length; i++) {
  var res = res.replace("  ", " ");
}
// spliting each word using space as saperator
var result = res.split(" ");

这就是我们所需要的:

str.trim().split(' ')