在空间有不同长度的JS拆分字符串?

问题描述:

所以我下面的字符串我想分裂:在空间有不同长度的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:是的。我越读这个问题,对我的感觉就越少。 –

您可以使用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

您可以使用分割法:

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'方法比循环抛出所有项目更合适。 –

你想冷凝给定字符/字符串的所有匹配到一个单一的一个。我通常这样做时,也使用与string.replace,像Pranav C.巴兰,但有不同的正则表达式:

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

 
console.log(strComponents);