替换字符串中的一些单词

时间:2018-09-11 13:40:23

标签: javascript jquery url

我喜欢更改语言功能中的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 ?

例如,如果我的网址是这样的: http://exemple.com/fr/agence

应该是这样的: http://exemple.com/en/agency

3 个答案:

答案 0 :(得分:3)

使用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的主要部分中的URL包含dec中的一个单词,则它也会更改(例如:{{1 }}将变成www.agence.com/fr),因此,如果您只想更改路径,请更改www.agency.com/en之后的部分,请使用/,然后仅替换该部分。

答案 1 :(得分:3)

您必须在最后一个斜杠之后获取字符串,并用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]);
}

答案 2 :(得分:1)

您可以使用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);