Доступное время: Понедельник Вторник Среда 8-12 12-5 Другой тип контакта: смс Недоступное время: Четверг 8-12
Я хочу разделить приведенную выше строку на три отдельных массива. 1-й массив = [понедельник Вторник Среда 8-12 12-5]
2-й массив = [СМС]
3-й массив = [четверг 8-12 ]
Я пытался использовать функцию разделения, но не работает! Я ценю вашу помощь. заранее спасибо
Означает ли 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 не предоставил надлежащего синтаксиса ожидаемого результата, а три отдельных массива, каждый из которых содержит только один элемент, не имеют никакого смысла.
Вы можете попробовать что-то подобное, если выделенная жирным шрифтом часть строки всегда одинакова:
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*$/
С помощью простого String.prototype.match
можно получить массив, содержащий сам совпадение, за которым следуют результаты 3 группы захвата.
Чтобы просто получить массив без совпадение, нужно slice
массива.
Также можно использовать именованные группы захвата через 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; }
Иногда «Другой тип контакта: SMS» и «Недоступное время: четверг 8–12» могут присутствовать или отсутствовать.