2016-08-11 45 views
-5

所以我下面的字符串我想分裂:在空間有不同長度的JS拆分字符串?

var str = 'Hello How are you'; 

我想要的結果看起來像:

['Hello','How','are','you']; 

當我加入迴應該是:

Hello, How are you 
join(',') 

應在空間長度大於1處出現A ,。在我們的示例中,它應該在helloHow之間。

+0

,你可以有一個確切* *陣列結果的唯一途徑,並且能夠按照你想要的方式加入它,將會根據以大寫字母開頭的單詞加入它......你認爲這樣可以滿足你的要求嗎?當然,你可以輕鬆繞過陣列,只是做一個替換...你在這裏的實際目標是什麼?你是否需要這個數組來處理某些事情,如果是這樣的話,它需要完全是這種格式? – musefan

+1

那麼數組應該如何知道某個元素之後有多個空格?這個問題沒有多大意義。 – undefined

+0

@Vohuman:是的。我越讀這個問題,對我的感覺就越少。 –

回答

1

您可以使用String#replace方法實現結果。用,替換大於1的所有空間長度。

var str = 'Hello How are you'; 
 
console.log(
 
    str.replace(/ {2,}/g, ', ') 
 
)

+0

嗯......我會認爲這比T.J's更糟糕......你假設唯一的目標是最終的結果,並且該數組不是必需的其他東西 – musefan

+0

@musefan:坦率地說,我認爲如果你發佈了一個解答你對這個問題的理解的答案,那麼更有建設性的事情。 –

+0

@ T.J.Crowder:爲什麼......這個問題不清楚,我已經評論過要求澄清,如果*它到來,我可以回答如果有人不打我呢。我唯一的一點是,目前任何答案只是一個猜測...也許OP會澄清,然後*這將是正確的答案 – musefan

-1

您可以使用分割法:

var str = 'Hello How are you'; 
var res = str.split(" "); 
var array =[]; 
for(var i=0; i<res.length; i++){ 
    if(res[i] === ""){ 
     delete res[i]; 
    }else{ 
     array.push(res[i]); 
    } 
} 
console.log(array) 
+0

實際上並不是OP所要的。此外,使用'.filter'方法比循環拋出所有項目更合適。 –

1

你想冷凝給定字符/字符串的所有匹配到一個單一的一個。我通常這樣做時,也使用與string.replace,像Pranav C.巴蘭,但有不同的正則表達式:

var str = 'Hello How are you'; 
 
var newStr = str.replace(/\s+/, ' ') 
 
var strComponents = newStr.split(' '); 
 

 
console.log(strComponents);