2016-08-11 2 views
-5

Так что я следующая строка, я хотел бы разделить:Разделить строку в JS пространством, имеющим разную длину?

var str = 'Hello How are you'; 

Я хочу, чтобы результат выглядеть следующим образом:

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

Когда я подключаюсь к его обратно должно быть:

Hello, How are you 
join(',') 

A , должно появиться там, где длина пространства больше 1. В нашем примере это должно быть между hello и How.

+0

Единственный способ, которым вы могли бы иметь, что * точный * результат массива, и иметь возможность присоединиться к нему так, как вы хотите, присоединиться к нему на основе слов, начинающихся с символов верхнего регистра ... вы думаете, что это будет работать для ваших требований? Конечно, вы можете легко обойти массив все вместе и просто заменить ... какова ваша фактическая цель здесь? Вам нужен массив для чего-то, и если это так, то это должен быть именно этот формат? – musefan

+1

Итак, как массив должен знать, что после определенного элемента было больше одного места? Вопрос не имеет большого смысла. – undefined

+0

@Vohuman: Да. Чем больше я читаю этот вопрос, тем меньше чувства, которое оно вызывает для меня. –

ответ

1

Вы можете достичь результата, используя String#replace способ. Замените всю длину пространства более 1 на ,.

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

+0

hmmm ... Я бы сказал, что это хуже, чем у T.J's ... as вы считаете, что единственной целью является конечный результат, и что массив не требуется для чего-то еще. – musefan

+0

@musefan: Честно говоря, я думаю, что более конструктивным было бы, если бы вы отправили ответ, обращаясь к вашему пониманию вопроса. –

+0

@ T.J.Crowder: Почему ... вопрос не ясен, я прокомментировал прояснение, и * если * он приходит, я могу ответить, если кто-то меня тоже не избил. Мой единственный момент в том, что на данный момент любой ответ - это просто догадка ... может быть, ОП выяснит, и * этот * будет правильным ответом – 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 С. Балан, но с другим регулярным выражением:

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

 
console.log(strComponents);

Смежные вопросы