2012-02-22 33 views
8

我需要一個標記器給出一個字符串與單詞之間的任意空格將創建一個沒有空子字符串的單詞數組。在Javascript中使用空格分隔字符串?

例如,給定一個字符串:

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

我用:

str2.split(" ") 

這也返回空的子串:

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

如何過濾掉空字符串數組?

回答

15

你可能甚至都不需要過濾,只用這則表達式分割:

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

題外話:什麼意思'在正則表達式\ B'? – 2012-02-22 19:55:40

+3

匹配單詞邊界,如空格,換行符,標點符號或字符串尾(https://developer.mozilla.org/zh/JavaScript/Guide/Regular_Expressions)。可能不是完美的正則表達式,但是對於這個例子,它可以工作。 – Daff 2012-02-22 19:58:04

+0

@Mustafa是的,我知道。但這只是一種好奇心。 – 2012-02-23 01:10:10

7

採用分體式之前,您應該修剪的字符串。

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

我建議.match

str.match(/\b\w+\b/g); 

這個匹配單詞邊界之間的話,那麼所有的空格不匹配,因此不包括在生成的數組英寸

+0

這個效果甚至更好: >>> str2 「Humpty Dumpty輕蔑地笑了一下當然你不會 - 直到我告訴你我的意思是一個很好的爲你敲倒論點!「 使用: str3 = str2。匹配(/ \ B \ W + \ B/G); 結果於: >>> str3 [「Humpty」,「Dumpty」,「smiled」,「contemptuously」,「Of」,「course」,「you」,「dont」,「until」我「,」你「,」我「,」意思「,」theres「,」a「,」nice「,」knock「,」down「,」argument「,」for「 ] 所以w + matchs也是「 - 」 – dokondr 2012-02-22 20:39:22

+1

@dokondr:你算作單詞人物?如果它是除空格以外的所有內容,則可能只需使用'[^]'而不是'\ w'。 – pimvdb 2012-02-22 20:47:28

7
str.match(/\S+/g) 

返回非空序列["I", "dont", "know", "what", "you", "mean", "by", "glory", "Alice", "said."]列表

str.match(/\w+/g) 

返回的所有單詞的列表(請注意這包括在點「之說。」):對["I", "dont", "know", "what", "you", "mean", "by", "glory", "Alice", "said"]

文檔match()

+1

很好的答案。對於別人的引用,'/ S + /'匹配不是**空白的字符組,而'/ w + /'匹配**字母數字+下劃線的字符組。這就是爲什麼期間('.')字符匹配一個而不是另一個。 – 2013-01-11 23:01:34

0

我認爲空的子字符串發生是因爲有多個空格可以在for循環中使用replace()來替換多個wh伊特 - 空間與單一的白色空間,然後分割()使用單一的白色空間這樣的拆分方案:

// getting full program from div 
 
var program = document.getElementById("ans").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(" ");

相關問題