Javascript: заменить конкретные слова в строке - PullRequest
0 голосов
/ 11 сентября 2018

Мне нравится изменять URL в зависимости от языка, поэтому я попробовал этот код:

var dec = {
  "agence": "agency",
  "conseil": "consulting",
  "partnaires": "partners",
  "a-propos": "about",
  "recherche": "search"
}
var url = window.location.href;
var urlRedirect = url.replace("/fr/", "/en/");
urlRedirect = urlRedirect.replace(!!) // how can I use the dec ?

Например, если мой URL такой: http://exemple.com/fr/agence

Должно быть так: http://exemple.com/en/agency

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Вы должны получить строку после последней косой черты и заменить ее на dec[string]:

var dec = {
  "agence": "agency",
  "conseil": "consulting",
  "partnaires": "partners",
  "a-propos": "about",
  "recherche": "search"
}
var url = "http://exemple.com/fr/agence"
var urlRedirect = url.replace("/fr/", "/en/");
var positionOfLastSlash = urlRedirect.lastIndexOf('/');
var lastPart = urlRedirect.substring(positionOfLastSlash + 1);
var firstPart = urlRedirect.substring(0, positionOfLastSlash+1);

if (lastPart in dec) {
  console.log(firstPart+dec[lastPart]);
}
0 голосов
/ 11 сентября 2018

Вы можете создать регулярное выражение, используя Object.keys, соединяя каждый ключ с | (или в регулярном выражении), затем вы можете использовать его в обратном вызове замены, вызывая значение dec.

var dec = {
  agence: "agency",
  conseil: "consulting",
  partnaires: "partners",
  "a-propos": "about",
  recherche: "search"
};
var url = "http://exemple.com/fr/agence/conseil/partnaires/a-propos/recherche";
var urlRedirect = url.replace("/fr/", "/en/");

var r = new RegExp(Object.keys(dec).join("|"), "gi");

urlRedirect = urlRedirect.replace(r, m =>dec[m]);

console.log(urlRedirect);
0 голосов
/ 11 сентября 2018

Перебирайте ключи объекта, используя цикл for...in, затем проверяйте, присутствует ли строка ключа в URL, если да, то replace() соответствует значению этого ключа.

См. Ниже, где я использую поддельный URL только для этого примера:

var dec = {
  "agence": "agency",
  "conseil": "consulting",
  "partnaires": "partners",
  "a-propos": "about",
  "recherche": "search",
  "fr":"en"
}

//var url =  window.location.href;
//let's fake a url here:
var url = "http://exemple.com/fr/agence";
console.log("entry URL: ", url)

for (var key in dec){
  if (url.indexOf(key) > -1){
    url = url.replace(key, dec[key])
  }
}

console.log("output URL: ", url);

Примечание: Это будет работать, но если в URL-адресе содержится одно из слов dec в основной части URL-адреса, он будеттакже измените (например: www.agence.com/fr станет www.agency.com/en) Итак, если вы хотите изменить только путь, часть после /, используйте window.location.pathname, затем замените только эту часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...