13 ноября 2010 г.

Убираем ненужные символы из строки (AS2, AS3)

[size=18]Удаление ненужных символов в строке[/size]
[size=15]ActionScript 2.0, 3.0[/size]
Иногда нам нужно избавиться от ненужных символов в строке, так как они могут помешать нам что либо реализовать. Например в файлах ОС Windows нельзя использовать символы  / \ : * ? " < >  |  о чем вам с радостью расскажет Windows при первой же попытки их туда вставить.

Давайте рассмотрим простенький скрипт для ActionScript 2.0 убирающий из строки вышеуказанные символы:


var str:String = "<имя>_фай|л|а?.:txt";
var badChar:Array = ["/", "\\", ":", "*", "?", "\"", "<", ">", "|"];
var mass:Array = [];

for (var i = 0; i <= str.length; i++)
{
mass = str.split(badChar[i]);
str = mass.join("");
}

trace(mass.join(""));


Принцип работы очень прост: есть массив ненужных символов, есть зараженная этими символами строка. Мы заполняем в цикле массив mass новыми элементами, разрывом между которами служат ненужные символы из массива badChar перебранные каждые в цикле, и следущим ходом соединяем элементы массива mass обратно в строку. Ну и по неписаной флешерской традиции показываем результат через trace (-:

А на ActionScript 3.0 есть функция replace() класса String, упрощающая все до безпредела. Вот как наша задача будет выглядеть для этой версии языка:


package
{
import flash.display.Sprite;

public class Main extends Sprite
{

public var str:String;
public var template:RegExp;

public function Main():void
{
str = "<имя>_фай|л|а?.:txt";
template = /[\/\\\:\*\?\"\<\>\|]/g;
trace(str.replace(template,""));
}

}
}

Тут тоже всё просто как веник - производим замену в строке с помощью функции replace(), и с использованием регулярного выражения template.

Подробнее о регулярных выражениях можно ознакомиться тут:

Регулярные выражения

Подробнее о функции String.replace() можно ознакомиться тут:

String.replace()

Комментариев нет:

Отправить комментарий