Как обрабатывать большое количество замен?

#javascript #jquery

#javascript #jquery

Вопрос:

Я хотел бы знать, есть ли лучший способ обработки большого количества замен jquery / javascript. Так выглядит мой код в настоящее время, и я буду добавлять в него больше слов / фраз. Мне интересно, должен ли я выполнять какой-то цикл со словами в массиве или объекте? Или слова, возможно, даже должны храниться в другом файле?

 input = input.replace(/bandb/g, "amp;")
        //COMMON ABREVIATIONS
        .replace(/bwithb/g, "w/")
        .replace(/bwithoutb/g, "w/o")
        .replace(/bpeopleb/g, "ppl")
        .replace(/bbecauseb/g, "b/c")
        .replace(/bestablishedb/g, "est.")
        .replace(/bstreetb/gi, "St.")
        .replace(/bavenueb/gi, "Ave.")
        .replace(/bparkwayb/gi, "Pkwy.")
        .replace(/blaneb/gi, "Ln.")
        .replace(/bboulevardb/gi, "Blvd.")
        .replace(/bassociatesb/gi, "Assoc.")
        .replace(/bretweetb/gi, "RT")
        .replace(/bapartmentb/gi, "Apt.")
        .replace(/bdirect messageb/gi, "DM")
        .replace(/bphoto creditb/, "PC")
        .replace(/bphoto credb/, "PC");
  

Комментарии:

1. Вы могли бы перебирать объекты / массивы с помощью jQuery .each , затем, возможно, сохранить определения в другом файле или получить его из базы данных через ajax или что-то в этом роде.

2. У меня есть решение для этого, но мне нужно найти мой школьный рабочий лист, дайте мне минуту.

3. В вашем примере данных, что вы хотите, должен быть вывод ?.

Ответ №1:

Я кое-что нашел, но, к сожалению, он не улавливает фразы из двух слов. Бьюсь об заклад, что-то не так с регулярным выражением.

 var input = {
  'band': "amp;",
  'with': "w/",
  'without': "w/o",
  'people': "ppl",
  'because': "b/c",
  'established': "est.",
  'street': "St.",
  'avenue': "Ave.",
  'parkway': "Pkwy.",
  'lane': "Ln.",
  'boulevard': "Blvd.",
  'associates': "Assoc.",
  'retweet': "RT",
  'apartment': "Apt.",
  'direct message': "DM",
  'photo credit': "PC",
  'photo cred': "PC"
};

console.log('band with'.replace(/w /gi, match => input[match]));