Мне нужно разбить длинную строку повторяющегося слова в массив - PullRequest
1 голос
/ 10 июля 2019

Пытаясь использовать Javascript, у меня очень длинная строка, и мне нужно разбить ее на массив, используя слово, которое повторяется через строку.

Пример:

long_string = "THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074| THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074| THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|"

Я пытался разделить и сопоставить, но это всегда не учитывает THS &

split_string = [];
split_string = long_string.split(/THS&/);
console.log(split_string);


В массив:

[THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074|, THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074|, THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|]

Но я получаю что-то вроде

[| Willam | Baker | 1234 Corker St| Jacksonville, TX 75074|, Steve | James | 4312 Corker St | Jacksonville, TX 75074|, | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|]

Ответы [ 4 ]

5 голосов
/ 10 июля 2019

Что бы вы ни выбрали в split (например, THS&), это не входит в результат. Решение состоит в том, чтобы использовать упреждающий просмотр , который фактически не захватывает строку:

var long_string = "THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074| THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074| THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|"

var split_string = long_string.split(/(?=THS&)/);
console.log(split_string);
2 голосов
/ 10 июля 2019

Метод split() не включает разделитель внутри результирующих подстрок. Если ваш разделитель всегда будет одинаковым, рассмотрите возможность его объединения в начале каждой подстроки. (Вы можете перебрать split_string и добавить сцепление "THS& " в начале каждой строки массива)

1 голос
/ 10 июля 2019

Попробуйте это

long_string.match(/\S.+?(?=( THS&)|$)/g)

Пробел до THS для усечения последнего пробела

1 голос
/ 10 июля 2019

Разделитель не будет включен в результаты, поэтому вам придется добавить его обратно. Кроме того, первый элемент будет пустым, поэтому используйте Array.prototype.shift () , чтобы удалить его.из полученного массива.EG:

var long_string = "THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074| THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074| THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|";

var split_string = long_string.split("THS&").map(function(item) {
  return "THS&"+item;
});
split_string.shift();

console.log(split_string);

/* 
[
  "THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074| ",
  "THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074| ",
  "THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|"
]
*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...