Разделить строку Javascript

Доступное время: Понедельник Вторник Среда 8-12 12-5 Другой тип контакта: смс Недоступное время: Четверг 8-12

Я хочу разделить приведенную выше строку на три отдельных массива. 1-й массив = [понедельник Вторник Среда 8-12 12-5]

2-й массив = [СМС]

3-й массив = [четверг 8-12 ]

Я пытался использовать функцию разделения, но не работает! Я ценю вашу помощь. заранее спасибо

Иногда «Другой тип контакта: SMS» и «Недоступное время: четверг 8–12» могут присутствовать или отсутствовать.

user454973 06.04.2022 03:16

Означает ли OP ["Monday Tuesday Wednesday 8-12 12-5"] или ["Monday", "Tuesday", "Wednesday", "8-12", "12-5"], а также для двух оставшихся?.. или ... означает ли OP даже один массив с тремя строковыми элементами, такими как ... ["Monday Tuesday Wednesday 8-12 12-5", "SMS", "Thursday 8-12"]. Возникает вопрос, поскольку OP не предоставил надлежащего синтаксиса ожидаемого результата, а три отдельных массива, каждый из которых содержит только один элемент, не имеют никакого смысла.

Peter Seliger 06.04.2022 04:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
62
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете попробовать что-то подобное, если выделенная жирным шрифтом часть строки всегда одинакова:

var s = "Available Times: Monday Tuesday Wednesday 8-12 12-5 Other type of contact: SMS Unavailable Times: Thursday 8-12"
var arr = []

arr.push(s.split(" Unavailable Times: ")[1])
s = s.split(" Unavailable Times: ")[0]

arr.unshift(s.split(" Other type of contact: ")[1])
s = s.split(" Other type of contact: ")[0]

arr.unshift(s.split("Available Times: ")[1])

console.info(arr)
Ответ принят как подходящий

Использовать разделение с регулярное выражение

let str = 'Available Times: Monday Tuesday Wednesday 8-12 12-5 Other type of contact: SMS Unavailable Times: Thursday 8-12'
let replace = str.replace('Available Times: ', '');
let arr = replace.split(/ Other type of contact: | Unavailable Times: /)
console.info(arr);

Does the OP mean ["Monday Tuesday Wednesday 8-12 12-5"] or ["Monday", "Tuesday", "Wednesday", "8-12", "12-5"] and likewise for the two remaining ones ?.. or ... does the OP even mean a single array with three string items like ... ["Monday Tuesday Wednesday 8-12 12-5", "SMS", "Thursday 8-12"]. The question arises since the OP did not provide a proper syntax of the expected result and three separate arrays each with just a single item does not make any sense.

В случае простого извлечения информации в виде трех разделенных строковых значений может помочь следующее регулярное выражение...

/Available Times:\s*(?<available>.*?)\s+Other type of contact:\s*(?<contact>.*?)\s+Unavailable Times:\s*(?<unavailable>.*?)\s*$/

  1. С помощью простого String.prototype.match можно получить массив, содержащий сам совпадение, за которым следуют результаты 3 группы захвата.

  2. Чтобы просто получить массив без совпадение, нужно slice массива.

  3. Также можно использовать именованные группы захвата через RegExp.prototype.exec и немного Присвоение деструктуризации

const sampleData =
  'Available Times: Monday Tuesday Wednesday 8-12 12-5 Other type of contact: SMS Unavailable Times: Thursday 8-12';

// see ... [https://regex101.com/r/jVedS4/1]
const regXGroups =
  /Available Times:\s*(?<available>.*?)\s+Other type of contact:\s*(?<contact>.*?)\s+Unavailable Times:\s*(?<unavailable>.*?)\s*$/;

console.info(
  sampleData.match(regXGroups)
);
console.info(
  sampleData.match(regXGroups).slice(1)
);

const {
  unavailable,
  available,
  contact,
} = regXGroups.exec(sampleData)?.groups ?? {};

console.info([available, contact, unavailable]);
.as-console-wrapper { min-height: 100%!important; top: 0; }

Другие вопросы по теме