[英]How do I use the Javascript String.replace() method correctly?
[英]How can I dynamically use string.replace?
wordsArray = ['guy', 'like', 'sweet', 'potatoes']; //so on and so forth
string = "I am a **NOUN** and I **VERB** **ADJECTIVE** **NOUN**.";
DELIMITER = "**";
for (var i = 0; i < wordsArray.length; i++)
{
string.replace(DELIMITER, wordsArray[i]);
}
嗨,這是我的代碼的簡化版。 我正在創建一個瘋狂的庫,而wordsArray的長度將始終等於空白的數量。 我當前代碼的問題是,在for循環中,它將替換每個**
。 問題是,我想替換整個東西,例如**NOUN**
,而不僅僅是**
。 但是,由於** **
之間的任何內容都不會始終相同,因此string.replace()不會完全起作用。 任何人都可以建議我進行編輯,以取代語音的所有部分,但最終還是將字符串作為正確的文本塊返回?
您可以使用string.match
來實現,方法是string.match
捕獲所有這些**<STRINGS>**
:
var wordsArray = ['guy', 'like', 'sweet', 'potatoes']; var string = "I am a **NOUN** and I **VERB-** **ADJECTIVE** **NOUN**."; var DELIMITER = "**"; var newString = string; // copy the string var stringArray = string.match(/(\\*\\*[A-Za-z-]+\\*\\*)/g); // array of all **<STRINGS>** for (var i = 0; i < wordsArray.length; i++) { newString = newString.replace(stringArray[i], wordsArray[i]); } console.log(newString);
您可以將數組綁定到replacer,然后在字符串上調用一次一次replace,我認為這要簡單得多:
"I am a **NOUN** and I **VERB** **ADJECTIVE** **NOUN**.".replace(/(\*\*\w+\*\*)/gi,(function(){
this._currentIndex = this._currentIndex || 0;
return this[this._currentIndex++];
}).bind(['guy', 'like', 'sweet', 'potatoes']));
//"I am a guy and I like sweet potatoes."
使用減少:
const string = "I am a **NOUN** and I **VERB** **ADJECTIVE** **NOUN**.";
const newString = ['guy', 'like', 'sweet', 'potatoes'].reduce(
(theString, replacement) => theString.replace(/\*{2}\w+\*{2}/, replacement),
string
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.