[英]Javascript: Replace specific words in string
我喜歡更改語言功能中的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
使用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
,然后僅替換該部分。
您必須在最后一個斜杠之后獲取字符串,並用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]); }
您可以使用Object.keys
和|
連接每個鍵來構建正則表達式|
(或在正則表達式中),則可以在調用dec
的值的replace回調中使用它。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.