我有一串文本,在某些字符« »
和包含UsedKeys
的数组之间有100个不同的“键”。我正在尝试将字符串str
与数组进行比较,并用对号字符替换在UsedKey
数组中找到的所有键。一般而言,我对循环以及JavaScript还是很陌生,而且似乎无法获得脚本来替换除数组中的最后一个键以外的任何键。在这种情况下,应该是«SPLXVIII»
。
我还有一个名为AllKeys
的第二个数组,我想使用它来隐藏所有未使用的键。我确定我必须找出两个数组(UsedKeys
和AllKeys
)之间的区别,但我不确定如何。
问题:
1)如何替换UsedKey数组中的所有键?
2)如何隐藏字符串中不在UsedKey数组中的所有其他键?
function replace() {
var str = ("«SPII» Club T-Bird Pass<br>«SPIV» Free Otter Pop<br>«SPVI» Club T-Bird Pass<br>«SPVIII» Free Water<br>«SPX» Club T-Bird Pass<br>«SPXII» Free Squishy<br>«SPXIV» Free Fast Pass Token (Redeem at thundershack)<br>«SPXVI» Free Hot Cheetos<br>«SPXVIII» Free Fast Pass Token (Redeem at thundershack)<br>«SPXX» Club T-Bird Pass<br>«SPXXII» Free Otter Pop<br>«SPXXIV» Free Grab Bag Item (it could be anything)<br>«SPXXVI» Thundershack Gift Card<br>«SPXXVIII» Free Sour Punch Stick<br>«SPXXX» Club T-Bird Pass<br>«SPXXXII» 50% Off Thundershack 1 item<br>«SPXXXIV» Free Grab Bag Item (it could be anything)<br>«SPXXXVI» Thunder Cash<br>«SPXXXVIII» Club T-Bird Pass<br>«SPXL» WIS Lanyard and Id Pouch<br>«SPXLII» Free Fast Pass Token (Redeem at thundershack)<br>«SPXLIV» Free Soda<br>«SPXLVI» Free Sour Punch Stick<br>«SPXLVIII» Free Grab Bag Item (it could be anything)<br>«SPL» Club T-Bird Pass<br>«SPLII» 50% Off Thundershack 1 item<br>«SPLIV» Me N Eds Pizza<br>«SPLVI» Thundershack Gift Card<br>«SPLVIII» Free Sour Punch Stick<br>«SPLX» Free Soda<br>«SPLXII» Club T-Bird Pass<br>«SPLXIV» Free Otter Pop<br>«SPLXVI» Free Water<br>«SPLXVIII» Club T-Bird Pass<br>«SPLXX» 50% Off Thundershack 1 item<br>«SPLXXII» Free Otter Pop<br>«SPLXXIV» Club T-Bird Pass<br>«SPLXXVI» Club T-Bird Season Pass<br>«SPLXXVIII» Free Otter Pop<br>«SPLXXX» Free Sour Punch Stick<br>«SPLXXXII» 50% Off Thundershack 1 item<br>«SPLXXXIV» Free Fast Pass Token (Redeem at thundershack)<br>«SPLXXXVI» Free Sour Punch Stick<br>«SPLXXXVIII» Free Water<br>«SPXC» Free 6 Flags Magic Mountain Entrance Ticket<br>«SPXCII» Free Otter Pop<br>«SPXCIV» Club T-Bird Pass<br>«SPXCVI» 50% Off Thundershack 1 item<br>«SPXCVIII» Free Water<br>«SPC» Thundershack Spending Spree");
var AllKeys = ["«SPI»","«SPII»","«SPIII»","«SPIV»","«SPV»","«SPVI»","«SPVII»","«SPVIII»","«SPIX»","«SPX»","«SPXI»","«SPXII»","«SPXIII»","«SPXIV»","«SPXV»","«SPXVI»","«SPXVII»","«SPXVIII»","«SPXIX»","«SPXX»","«SPXXI»","«SPXXII»","«SPXXIII»","«SPXXIV»","«SPXXV»","«SPXXVI»","«SPXXVII»","«SPXXVIII»","«SPXXIX»","«SPXXX»","«SPXXXI»","«SPXXXII»","«SPXXXIII»","«SPXXXIV»","«SPXXXV»","«SPXXXVI»","«SPXXXVII»","«SPXXXVIII»","«SPXXXIX»","«SPXL»","«SPXLI»","«SPXLII»","«SPXLIII»","«SPXLIV»","«SPXLV»","«SPXLVI»","«SPXLVII»","«SPXLVIII»","«SPXLIX»","«SPL»","«SPLI»","«SPLII»","«SPLIII»","«SPLIV»","«SPLV»","«SPLVI»","«SPLVII»","«SPLVIII»","«SPLIX»","«SPLX»","«SPLXI»","«SPLXII»","«SPLXIII»","«SPLXIV»","«SPLXV»","«SPLXVI»","«SPLXVII»","«SPLXVIII»","«SPLXIX»","«SPLXX»","«SPLXXI»","«SPLXXII»","«SPLXXIII»","«SPLXXIV»","«SPLXXV»","«SPLXXVI»","«SPLXXVII»","«SPLXXVIII»","«SPLXXIX»","«SPLXXX»","«SPLXXXI»","«SPLXXXII»","«SPLXXXIII»","«SPLXXXIV»","«SPLXXXV»","«SPLXXXVI»","«SPLXXXVII»","«SPLXXXVIII»","«SPLXXXIX»","«SPXC»","«SPXCI»","«SPXCII»","«SPXCIII»","«SPXCIV»","«SPXCV»","«SPXCVI»","«SPXCVII»","«SPXCVIII»","«SPXCIX»","«SPC»"];
var UsedKeys =["«SPII»","«SPXCIV»","«SPLXVIII»"];
for (var i = 0; i < UsedKeys.length; i++) {
var a = str.replace(UsedKeys[i],"✔️");
}
document.getElementById("index").innerHTML = a; }
非常感谢!
答案 0 :(得分:1)
您应该使用正则表达式。
for (var i = 0; i < UsedKeys.length; i++) {
var regex = new RegExp(UsedKeys[i], 'g')
var a = str.replace(regex, "✔️");
}
“ g”表示全局。因此,请替换所有出现的情况。
答案 1 :(得分:1)
您可以使用UsedKeys
替代运算符将|
数组转换为单个正则表达式,以替换所有正则表达式。 g
修饰符使其替换所有出现的内容。
var regex = new RegExp(UsedKeys.join('|'), 'g');
var newStr = str.replace(regex, "✔️");
您可以使用以下方法隐藏其余所有内容:
newStr = newStr.replace(/«[^»]*»/g, " ");