我喜欢更改语言功能中的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
答案 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);