Методы substr() и substring() AS3 — выделение/выборка частей строк

На этом уроке мы рассмотрим два вопроса:

  1. Методы substr() и substring() AS3 — выделение/выборка частей строк
  2. Дополнительная информация

Возможно, на практике Вы столкнетесь с ситуациями в ActionScript 3, когда Вам нужно будет выделить какой-то фрагмент строки (String), то есть ее часть. Например, необходимо выделить в адресе электронной почты все символы до знака @ (имя адресата).

В AS3 есть два близких метода для проведения подобной операции, а именно substr() и substring().

Первый метод принимает два аргумента:

  • начальный индекс (с которого мы начинаем выделение или выборку)
  • общее количество символов для выделения

Например:

var bookTitle:String = "Наполеон";
var strPart:String = bookTitle.substr(2, 3);

В итоге значение переменной strPart будет равно "пол": три символа начиная с третьего. Заметьте при этом, что у третьего символа индекс равен 2!

Метод substring() также принимает два аргумента:

  • первый – это индекс начального символа с которого мы начнем отсчет нашей выборки (как и в случае с substr())
  • второй – это индекс последнего символа на котором выборка должна закончиться

Поэтому, используя пример приведенный выше

var bookTitle:String = "Наполеон";
var strPart:String = bookTitle.substring(6, 7);

мы получим "он". Выделение начинается с символа с индексом 6 (буква "о") и заканчивается символом с индексом 7 включительно (буква "н").

Методы substr() и substring() AS3 — выделение/выборка частей строк

Создайте поле текста, например

var txtEmailUser:TextField = new TextField();

Задайте ему автоматическую ширину и выравнивание по левому краю

txtEmailUser.autoSize = TextFieldAutoSize.LEFT;

Определите местоположение для текстового поля и добавьте его на сцену

txtEmailUser.x = 150;
txtEmailUser.y = 150;
addChild(txtEmailUser);

Создайте еще одно текстовое поле

var txtEmailDomain:TextField = new TextField();

Задайте ему автоматическую ширину и выравнивание по левому краю

txtEmailDomain.autoSize = TextFieldAutoSize.LEFT;

Определите местоположение для текстового поля и добавьте его на сцену

txtEmailDomain.x = 150;
txtEmailDomain.y = 250;
addChild(txtEmailDomain);

Декларируйте строковую переменную

var email:String = "post@mail.ru";

Сделайте выборку нужных символов, например

var emailUser:String = email.substring(0, email.indexOf("@"));

Сделайте выборку других символов, если необходимо

var emailDomain:String;
emailDomain = email.substring((email.indexOf("@")+1), email.length);

А теперь отобразите полученные значения в созданных текстовых полях

txtEmailUser.text = emailUser;
txtEmailDomain.text = emailDomain;

Нажмите Ctrl + Enter. Ваш flash-ролик начнет воспроизводиться.

В результате в текстовых полях появятся две половины электронного адреса: до символа "@" и после него, соответственно.

Дополнительная информация

Actionscript также поддерживает и метод slice(). Он очень похож на substring() и при передаче ему положительных чисел в виде аргументов, фактически, идентичен первому. Однако метод slice() при передаче ему отрицательных чисел в виде аргументов способен осуществлять поиск в строке справа налево, тогда как substring() просто игнорирует подобное и приводит отрицательные числа к нулю.

var tree:String = "Зеленый клен";
trace(tree.substring(6, tree.length)); //returns "клен"
trace(tree.slice(6, tree.length)); //returns "клен"
trace(tree.substring(-3, tree.length)); // returns "Зеленый клен"
trace(tree.slice(-3, tree.length)); // returns "клен"