- Пошук підрядка по позиції символу
- Пошук позиції символу відповідної подстроки
- Створення масиву подстрок, розбитих на основі роздільників
- Пошук шаблонів в рядках і заміна подстрок
- Пошук відповідних подстрок
- Заміна збіглися подстрок
Підрядки - це послідовні символи в рядку. Наприклад, рядок "abc" має наступні підрядка: "", "a", "ab", "abc", "b", "bc", "c". Для знаходження подстрок в рядку можна користуватися методами ActionScript.
В ActionScript шаблони визначаються за допомогою рядків або регулярних виразів. Наприклад, ось який регулярний вираз визначає конкретний шаблон: за буквами A, B і C слід цифра (косі риси є роздільниками в регулярних виразах).
/ ABC \ d /
ActionScript включає методи для пошуку шаблонів в рядках і для заміни знайдених відповідностей на заміщають підрядка. Ці методи описуються в наступних розділах.
Регулярні вирази дозволяють визначати досить складні шаблони. Додаткові відомості див. У розділі « Використання регулярних виразів ».
Пошук підрядка по позиції символу
Методи substr () і substring () мають багато спільного. Вони обидва повертають подстроку заданої рядки. Вони обидва приймають два параметра. В обох методах перший параметр вказує позицію початкового символу в цьому рядку. Однак в методі substr () другим параметром є length, що містить довжину повертається підрядка, а в методі substring () - параметр end, що містить позицію символу в кінці підрядка (який не включений в возвращаемую рядок). У цьому прикладі демонструється відмінність цих двох методів.
var str: String = "Hello from Paris, Texas !!!"; trace (str.substr (11,15)); // output: Paris, Texas !!! trace (str.substring (11,15)); // output: Pari
Метод slice () схожий на метод substring (). Коли в якості параметрів задані невід'ємні цілі числа, він працює практично так само. Однак метод slice () може приймати в якості параметрів і негативні числа. У цьому випадку позиція символу вважається від кінця рядка, як в наступному прикладі.
var str: String = "Hello from Paris, Texas !!!"; trace (str.slice (11,15)); // output: Pari trace (str.slice (-3, -1)); // output: !! trace (str.slice (-3,26)); // output: !!! trace (str.slice (-3, str.length)); // output: !!! trace (str.slice (-8, -3)); // output: Texas
Як параметри методу slice () можна вказати комбінацію з негативного і невід'ємного чисел.
Пошук позиції символу відповідної подстроки
Методи indexOf () і lastIndexOf () можна використовувати для пошуку відповідних подстрок в рядку, як в наступному прикладі.
var str: String = "The moon, the stars, the sea, the land"; trace (str.indexOf ( "the")); // output: 10
Зверніть увагу на те, що метод indexOf () враховує регістр.
Можна задати другий параметр, щоб вказати позицію індексу в рядку, з якої слід починати пошук, як показано нижче.
var str: String = "The moon, the stars, the sea, the land" trace (str.indexOf ( "the", 11)); // output: 21
Метод lastIndexOf () знаходить останнє входження підрядка в рядку.
var str: String = "The moon, the stars, the sea, the land" trace (str.lastIndexOf ( "the")); // output: 30
Якщо для методу lastIndexOf () вказати другий параметр, пошук виконується починаючи з заданої позиції в зворотному порядку (справа наліво).
var str: String = "The moon, the stars, the sea, the land" trace (str.lastIndexOf ( "the", 29)); // output: 21
Створення масиву подстрок, розбитих на основі роздільників
За допомогою методу split () можна створити масив подстрок, розбитих на основі використовуваних символів-роздільників. Наприклад, рядок, розділену комами або табуляції, можна розбити на кілька подстрок.
У наступному прикладі показано, як можна розбити масив на підрядка, використовуючи як роздільник амперсанд (&).
var queryStr: String = "first = joe & last = cheng & title = manager & StartDate = 3/6/65"; var params: Array = queryStr.split ( "&", 2); // params == [ "first = joe", "last = cheng"]
Другий, необов'язковий параметр методу split () визначає максимальний розмір повертається масиву.
Як роздільник можна також використовувати регулярний вираз.
var str: String = "Give me \ t5." var a: Array = str.split (/ \ s + /); // a == [ "Give", "me", "5."]
Додаткові відомості див. У розділі « Використання регулярних виразів »І в Довідник ActionScript® 3.0 для платформи Adobe® Flash® Platform .
Пошук шаблонів в рядках і заміна подстрок
Клас String включає наступні методи для роботи з шаблонами в рядках.
Методи match () і search () служать для пошуку подстрок, відповідних шаблоном.
Метод replace () служить для пошуку подстрок, відповідних шаблоном, і їх заміни заданої підрядком.
Ці методи описуються в наступних розділах.
Для визначення шаблонів, що використовуються в цих методах, можна використовувати такі рядки або регулярні вирази. Додаткові відомості про регулярні вирази див. В розділі « Використання регулярних виразів ».
Пошук відповідних подстрок
Метод search () повертає позицію індексу першої підрядка, відповідної заданим шаблоном, як в наступному прикладі.
var str: String = "The more the merrier."; // (This search is case-sensitive.) Trace (str.search ( "the")); // output: 9
Для визначення шаблону відповідності можна використовувати регулярні вирази, як показано нижче.
var pattern: RegExp = / the / i; var str: String = "The more the merrier."; trace (str.search (pattern)); // 0
Метод trace () видає значення 0, так як перший символ в ладі має позицію індексу 0. У регулярному виразі встановлюється прапор i, щоб при пошуку не враховувався регістр.
Метод search () знаходить тільки одне відповідність і повертає його початкову позицію індексу, навіть якщо в регулярному виразі заданий прапор g (global).
У наступному прикладі показано більш складне регулярний вираз, що дозволяє знайти відповідність рядка, укладеної в подвійні лапки.
var pattern: RegExp = / "[^"] * "/; var str: String =" The \ "more \" the merrier. "; trace (str.search (pattern)); // output: 4 str =" The \ "more the merrier."; trace (str.search (pattern)); // output: -1 // (Indicates no match, since there is no closing double quotation mark.)
Метод match () працює подібним чином. Він виконує пошук відповідної підрядка. Однак, коли в шаблоні регулярного виразу встановлений прапор global, як в наступному прикладі, метод match () повертає масив відповідних значень.
var str: String = "[email protected], [email protected]"; var pattern: RegExp = /\w*@\w*\.[org|com]+/g; var results: Array = str.match (pattern);
Масиву result присвоюється таке значення:
[ "[email protected]", "[email protected]"]
Додаткові відомості про регулярні вирази див. В розділі « Використання регулярних виразів ».
Заміна збіглися подстрок
За допомогою методу replace () можна знайти потрібний шаблон в рядку і замінити відповідності заданої замісної рядком, як в наступному прикладі.
var str: String = "She sells seashells by the seashore."; var pattern: RegExp = / sh / gi; trace (str.replace (pattern, "sch")); // sche sells seaschells by the seaschore.
Зверніть увагу, що в цьому прикладі в збіглися рядках не враховується регістра, так як в регулярному виразі встановлений прапор i (ignoreCase), і робиться кілька замін, так як встановлений прапор g (global). Додаткові відомості див. У розділі « Використання регулярних виразів ».
У замещающую рядок можна включити такі заміщають коди з $. Замість заміщає коду з $ вставляється заміщає текст, наведений у наступній таблиці.
Код з $
замісник текст
$$
$
$ &
Збіглася подстрока.
$ `
Частина рядка, що передує збіглася підрядку. У цьому коді використовується пряма ліва одинарна лапка ( `), а не пряма одинарна лапка ( ') або ліва фігурна лапки (').
$ '
Частина рядка, яка передує збіглася підрядку. Цей код використовує пряму одиночну лапки ( ').
$ n
Зареєстроване збіг групи в дужках n, де n - це цифра від 1 до 9, а за $ n годі було десяткове число.
$ nn
Зареєстроване збіг групи в дужках nn, де nn десяткове двозначне число (від 01 до 99). Якщо запис nn не визначена, як заміщає тексту використовується порожній рядок.
Наприклад, нижче показано застосування заміщають кодів $ 2 і $ 1, що представляють першу і другу зареєстровані збіглися групи:
var str: String = "flip-flop"; var pattern: RegExp = / (\ w +) - (\ w +) / g; trace (str.replace (pattern, "$ 2- $ 1")); // flop-flip
Також можна використовувати функцію в якості другого параметра методу replace (). Співпав текст замінюється повернутим значенням функції.
var str: String = "Now only $ 9.95!"; var price: RegExp = /\$([\d,]+.\d+)+/i; trace (str.replace (price, usdToEuro)); function usdToEuro (matchedSubstring: String, capturedMatch1: String, index: int, str: String): String {var usd: String = capturedMatch1; usd = usd.replace ( ",", ""); var exchangeRate: Number = 0.853690; var euro: Number = parseFloat (usd) * exchangeRate; const euroSymbol: String = String.fromCharCode (8364); return euro.toFixed (2) + "" + euroSymbol; }
Коли в якості другого параметра методу replace () використовується функція, їй передаються такі аргументи:
Збігається частина рядка.
Зареєстровані збігу групи. Кількість переданих таким чином аргументів варіюється в залежності від кількості збігів в дужках. Кількість збігів в дужках можна визначити, перевіривши значення параметра arguments.length - 3 в коді функції.
Позиція в індексі в рядку, де починається збіг.
Рядок повністю.