Как добавить фразу в массив как один элемент с помощью split?
У меня есть строка, которую я превращаю в массив с помощью split(" ").
Например:
apple orange pineaple
["apple", "orange", "pineaple"]
Но как я могу добавить два слова в один элемент, чтобы было вот так?
apple orange pineaple "green banana"
["apple", "orange", "pineaple", "green banana"]
Спасибо!
Ответы (1 шт):
Автор решения: Kirzzz
→ Ссылка
Вот собственно и велосипед.
let text = '"add "2017-04-25 3 " qq"qqq EUR" "Sasha doesnt have" any " friends qqqqq" "qwe qwe qwe qwe"';
let arr = [];
let tempArr = text.split(' ');
for(i=0;i<tempArr.length;i++){//Начали бегать по массиву элементов текста
if(tempArr[i][0]=='"'){//Проверка открывается ли ковычка
let tempVar = tempArr[i]+' ';//Положили первый найденный объект после кавычки в переменную
for(k=i+1;k<tempArr.length;k++){//Запустили цикл поиска закрывающей кавычки
if(tempArr[k][tempArr[k].length-1]=='"'){//Проверка закрывается ли объект кавычкой
tempVar+=(tempArr[k]);
arr.push(tempVar);//Запихнули переменную в общий массив
i+=k-i;
break;//Прерываем вложеннный цикл
}else{
tempVar+=(tempArr[k]+' ');//Запихиваем промежуточные объекты между кавычками в перменную
if(k==tempArr.length-1){//Если только одна кавычка
arr.push(tempVar.split(' ')[0]);
}
}
}
if(i+1==tempArr.length&&tempVar.split(' ').length==1){
arr.push(tempVar.split(' ')[0]);
}
}else{
arr.push(tempArr[i]);
}
}
for(i=0;i<arr.length;i++){
$("#show").append(arr[i]+'</br>');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='show'></div>
p.s В прошлых изменениях укороченная версия.