簡體   English   中英

Javascript:替換字符串中的特定單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM