Если переменная test String, которую вы заменяете, не использует специальное сопоставление с регулярным выражением, то простые строковые функции, вероятно, будут более эффективными (toLowerCase достигает нечувствительного к регистру соответствия, эквивалентного параметру регулярного выражения "i"):
var str:String = "permanentContainer-temporaryContainer-";
var test:String = "temp";
var idx:int = str.toLowerCase().indexOf(test.toLowerCase());
str = str.substr(0, idx)+'-'+str.substr(idx+test.length);
trace(str);
Если вы хотите заменить все экземпляры тестовой строки (эквивалентно опции регулярного выражения "g"):
var str:String = "permanentContainer-temporaryContainer-";
var test:String = "temp";
var idx:int = str.toLowerCase().indexOf(test.toLowerCase());
while (idx>=0) {
str = str.substr(0, idx)+'-'+str.substr(idx+test.length);
trace(str);
idx = str.toLowerCase().indexOf(test.toLowerCase());
}
Я проверил производительность substr по сравнению с RegEx, и это очень близко, но этоОказывается, что RegEx работает быстрее (на моей платформе), когда вы начинаете добавлять параметры, такие как нечувствительность к регистру и глобальное замещение (с помощью возможностей собственных реализаций), хотя строковый подход можно оптимизировать (т. е. вызывать toLowerCase только один раз перед циклом, илипоиск подстроки, начиная с последнего найденного идентификатора.)