Как проверить, содержит ли строка подстроку из массива, и разделить ее

У меня есть массив строк, например:

var matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"]

и я хочу проверить, есть ли в моей строке (например, var myString= "Cod.Fisc.FGDTFR34L16G643W") существует эта подстрока (в данном случае «Cod.Fisc»). Если я нашел подстроку, я хочу разделить строку на две части, например ["Cod.Fisc", "FGDTFR34L16G643W"]. Как я могу сделать это с помощью JavaScript?

Поведение ключевого слова "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) для оценки ваших знаний,...
2
0
1 665
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Ты можешь найти веревку и взять остальные. Может быть, лучше отсортировать массив шаблонов по убыванию длины, потому что он сначала находит самую длинную строку.

var matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"],
    string = "Cod.Fisc.FGDTFR34L16G643W",
    found = matchCodFisc
        .sort((a, b) => b.length - a.length)
        .find(s => string.startsWith(s)),
    result = [found, string.slice(found.length)];

console.info(result);

Это круто, +1, я делал часть среза с регулярным выражением, и фильтровать это лучше

Code Maniac 31.05.2019 11:53

Вы можете использовать поиск, включение и разделение

  • Сначала найдите соответствующее значение из matchChodFisc, используя find и includes
  • Создайте шаблон регулярного выражения на основе значения found
  • Разделить с помощью созданного нами регулярного выражения и заполнить пустые значения

var matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"]
var myString= "Cod.Fisc.FGDTFR34L16G643W"

let found = matchCodFisc.find(val=> myString.includes(val))
let regex = new RegExp(`(${found})`, 'gi')

let splited = myString.split(regex).filter(Boolean)

console.info(splited)

Вы можете использовать метод Array#findIndex, используя Str.includes()

var matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"]
var myString = "Cod.Fisc.FGDTFR34L16G643W";
var resindex = matchCodFisc.findIndex(a => myString.includes(a));

console.info([
  matchCodFisc[resindex],
  myString.split(matchCodFisc[resindex])[1]
])

Превратите свой массив в регулярное выражение:

const matchCodFisc = ["C.F.", "CF", "Cod.Fisc.", "C.F"];
const myString = "Cod.Fisc.FGDTFR34L16G643W";

const splitRegex = new RegExp('('+matchCodFisc.join('|')+')\\w+', 'g');
console.info(splitRegex);
let result = splitRegex.exec(myString)

console.info(result[1])

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