[英]Replace each occurrence of character/word with different word in javascript
var string = "Please click on dashboard and then open the dashboard details to verify your details on the data"; var stringArray = ["dashboard", "dashboard", "data"] var replaceArray = ["https://abcd.com/login", "https://abcd.com/home", "https://abcd.com/data"] for(i=0;i<stringArray.length; i++){ string = string.replace(stringArray[i].trim(), "<a href='"+replaceArray[i].trim()+"'>"+stringArray[i].trim()+"</a>"); }
我有一個 string 和 2 個 arrays 像上面一樣。 我需要用兩個 arrays 中提到的相應錨鏈接標簽替換我的 string。 stringArray 定義要鏈接的單詞,replaceArray 定義應添加的 URL。 就像儀表板的第一次出現應該錨鏈接到“https://abcd.com/login”和“儀表板”的第二次出現應該替換為“https://abcd.com/home”和“數據”應該替換與“https://abcd.com/data”。
我試圖找出 string 中的單詞並使用 replace/replaceAll 替換它,對於單個出現的單詞工作正常,但對於多次出現它不起作用。
任何人都可以幫我解決這個問題。
結果:
"Please click on <a href='https://abcd.com/login'><a href='https://abcd.com/home'>dashboard</a></a> and then open the dashboard details to verify your details on the <a href='https://abcd.com/data'>data</a>"
預期 Output:
"Please click on <a href='https://abcd.com/login'>dashboard</a> and then open the <a href='https://abcd.com/home'>dashboard</a> details to verify your details on the <a href='https://abcd.com/data'>data</a>"
我建議使用 reduce 方法和正則表達式來解決這個問題,其中正則表達式將是 stringArray 數組的 n 元素。
通過reduce,我們將通過在每次迭代時替換變量“string”中的單詞來實現這一點,對於下一次迭代,我們已經替換了變量“string”的更改值
解決方案:
var string = "Please click on dashboard and then open the dashboard details to verify your details on the data"; var stringArray = ["dashboard", "dashboard", "data"]; var replaceArray = ["apple collection", "delta collection", "data collection"]; stringArray.reduce((acc, stringRegExp, index) => { return acc.replace(new RegExp(stringRegExp), replaceArray[index]); }, string)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.