Według String.prototype.replace()
page on MDN, powinny być w stanie łatwo zastąpić wiele wzorców tylko za pomocąDlaczego javascript nie zastępuje globalnej flagi w Chrome lub IE i jak ją obejść?
str.replace('what to replace', 'replace with', 'flags')
i ustawienie flagi do 'g'
.
Działa doskonale w Firefoksie 3.6. Ale w Chrome i IE8 zastępuje tylko pierwszy 'what to replace'
.
mogę użyć składni z
str.replace(/what to replace/gi, 'replace with')
. Ale wyciągam 'what to replace'
z tablicy, co utrudnia dodawanie flag w tej składni.
Oto kod, którego próbuję użyć. Jak mogę go zmodyfikować do pracy w Chrome, a także w Firefoksie?
function generateQuestion()
{
//alert('variable length: '+variableList.length);
for(i=0;i<variableList.length;i++)
{
variable = variableList[i];
rep = replacementList[i];
flags = "gi";
questionText = questionText.replace(variable, rep, flags);
}
}
Dlaczego muszę w ogóle modyfikować? Czy Chrome nie powinien oceniać kodu JavaScript zgodnie z opisem w linku?
Dzięki! Wiedziałem, że musi to być coś prostszego. Potrzebowałem tylko innej osoby, aby spojrzeć na problem.: D –
Ale wtedy masz problem, że ciągi dla RegExp muszą być uniknięte, co jest dość podatne na błędy. – Mitar
@Mitar To niefortunne, ale nie da się tego obejść. Musisz tylko uważać na ucieczkę –