AS3 Заменить секцию строки тире, используя RegExp - PullRequest
1 голос
/ 13 февраля 2012

Я бы хотел иметь возможность заменить часть строки тире.Заменяемый раздел будет переменным.

var str:String = "permanentContainer-temporaryContainer-"
var test:String = "temp";
var pattern:RegExp = /-[(+test+)]+-/i;
trace( str.replace(pattern,"-"));

Я бы хотел, чтобы результат отследил:

permanentContainer--oraryContainer-

Ответы [ 2 ]

1 голос
/ 13 февраля 2012
var str:String = "permanentContainer-temporaryContainer-"
var test:String ="temp";
var regex:RegExp = new RegExp(test,"ig");
trace(str.replace(regex,"-"));
0 голосов
/ 14 февраля 2012

Если переменная 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 только один раз перед циклом, илипоиск подстроки, начиная с последнего найденного идентификатора.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...