簡體   English   中英

如何動態使用string.replace?

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

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