as3 replaceВсе нечувствительный - PullRequest
4 голосов
/ 13 декабря 2011

У меня есть эта функция as3

public static function StringReplaceAll( source:String, find:String, replacement:String ) : String {
      return source.split( find ).join( replacement );
}

Работает нормально: есть идеи, как сделать регистр нечувствительным? Привет

Ответы [ 2 ]

19 голосов
/ 13 декабря 2011

Просто используйте функцию String # replace () .

например:

trace("HELLO there".replace(/e/gi, "a"));
//traces HaLLO thara

Первый аргумент в функции замены - это регулярное выражение. Вы найдете информацию о них по всему Интернету . И есть этот удобный инструмент от Гранта Скиннера под названием Regexr , с помощью которого вы можете проверить свои регулярные выражения в стиле ActionScript.

Часть между двумя косыми чертами (/) является фактическим регулярным выражением.

  • ' g ' после регулярного выражения означает «заменить глобально» (т. Е. Все вхождения буквы «e» в примере, без «g» это просто заменит первое вхождение).
  • « i » означает «выполнить поиск без учета регистра» (в данном примере без «i» заглавная буква E не была бы заменена).

Обратите внимание, что /e/gi - это просто сокращение для new RegExp("e", "gi")

0 голосов
/ 13 декабря 2011

Быстрый способ - сделать две замены. Один для нижнего регистра и один для верхнего. Это будет выглядеть примерно так:

public static function StringReplaceAll( source:String, find:String, replacement:String ) : String 
{

    var replacedLowerCase:String = StringReplace(source, find.toLowerCase(), replacement.toLowerCase());

    return StringReplace(replacedLowerCase, find.toUpperCase(), replacement.toUpperCase());
}

private static function StringReplace( source:String, find:String, replacement:String ) : String 
{
    return source.split(find).join(replacement);
}

Таким образом, в этом случае вы сохраните дело с вашим find в неизменном виде, т.е.

trace(StringReplaceAll('HELLO there', 'e', 'a'));
// traces HALLO thara

Если вы не хотите сохранять дело в целости и сохранности, @ RIAstar's String.replace() ответ будет чище. (Но вы могли бы также использовать его пример дважды в этом отношении)

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