Исходники и листинги ::: Action Script ::: Класс для поиска и замены строк (AS2/AS3)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  /**
  Вариант для ActionScript 3.0. Скопировать содержимое в файл src_rep.as и положить рядом с флешкой.
  Перед использованием функций пишем:
  import src_rep;
   
  Описание (для AS2/AS3 версий):
  Данный класс имеет три функции: поиск, мульти-поиск, и замена. В чем различия? Функция поиск, ведет
  поиск только до первой похожей строки, а мульти-поиск ищет ВСЕ похожие строки. 
   
  Более подробней:
  Функция search принимает два аргумента, - 'a','b'. 'a' - строка которую мы ищем, 'b' - текст в котором 
  ведется поиск. Функция возвращает индекс начала найденой строки, если она есть, или -1, если 
  ничего не найдено.
   
  Функция multi_search тоже принимает два аргумента. Они схожи с аргументами из прошлой функции. 
  Но эта функция возвращает не число с индексом найдейной строки, а массив, с индексами. Если же 
  ничего не будет найдено, то функция вернет пустой массив (length = 0).
   
  Теперь третья функция replace. Она принимает уже три аргумента. 'a','c' и 'b'. смысл у 'a' и 'b' - такой 
  же как и в прошлых функциях. Что же касается аргумента 'c', то это строка, на которую заменить 
  найденую строку 'a'. Функция возвращает строку с заменой всех найденых строк.
   
  Пример(ы) (AS2/AS3):
   
  import src_rep;
  var str1:String = "Вася ищет собаку";
  trace(src_rep.search("ищет", str1)); // вернет: 5
   
  var str2:String = "палка, ложка, кампот, палка, даширак, тилифон, палка"
  trace(src_rep.multi_search("палка", str2)); // вернет: 0,22,47
   
  var str3:String = "Пупкин. Вася Пупкин";
  trace(src_rep.replace("Пупкин", "Уткин", str3)); // вернет: Уткин. Вася Уткин
   
  */
 
 
  //это вариант для AS 3.0
  package {
  public class src_rep {
  public function src_rep() {
  }
  static public function search(a:String, b:String):Number {
  var it_num:Number = -1;
  for (var i:Number = 0; i < b.length; i++) {
  if (b.substr(i, a.length) == a) {
  it_num = i;
  break;
  }
  }
  return it_num;
  }
  static public function multi_search(a:String, b:String):Array {
  var ar:Array = new Array();
  for (var i:Number = 0; i < b.length; i++) {
  if (b.substr(i, a.length) == a) {
  ar.push(i);
  }
  }
  return ar;
  }
  static public function replace(a:String,c:String,b:String):String {
  var num_of:Array=multi_search(a,b);
  var dec:Number=c.length - a.length;
  for (var i:Number=0; i < num_of.length; i++) {
  var temp_str1:String=b.substring(0,num_of[i]);
  var temp_str2:String=b.substring(num_of[i] + a.length,b.length);
  var temp_str3:String=temp_str1 + c + temp_str2;
  b=temp_str3;
  for (var m=i + 1; m < num_of.length; m++) {
  num_of[m]+= dec;
  }
  }
  return b;
  }
  }
  }
 
 
  //это вариант для AS 2.0, также как и AS 3.0 версию, скопировать в файл src_rep.as, и прописать import src_rep;
  class src_rep {
  public function src_rep() {
  }
  public static function search(a:String, b:String):Number {
  var it_num:Number = -1;
  for (var i:Number = 0; i < b.length; i++) {
  if (b.substr(i, a.length) == a) {
  it_num = i;
  break;
  }
  }
  return it_num;
  }
  public static function multi_search(a:String, b:String):Array {
  var ar:Array = new Array();
  for (var i:Number = 0; i < b.length; i++) {
  if (b.substr(i, a.length) == a) {
  ar.push(i);
  }
  }
  return ar;
  }
  static public function replace(a:String,c:String,b:String):String {
  var num_of:Array=multi_search(a,b);
  var dec:Number=c.length - a.length;
  for (var i:Number=0; i < num_of.length; i++) {
  var temp_str1:String=b.substring(0,num_of[i]);
  var temp_str2:String=b.substring(num_of[i] + a.length,b.length);
  var temp_str3:String=temp_str1 + c + temp_str2;
  b=temp_str3;
  for (var m=i + 1; m < num_of.length; m++) {
  num_of[m]+= dec;
  }
  }
  return b;
  }
  }
<<< Предыдущая работа

Вернуться в галерею исходников
Класс для поиска и замены строк (AS2/AS3)
Автор: Qwerty47
Город: неизвестно
Дата: 06.06.2009  21:01
Комментариев: 6
Просмотров: 2166
Оценка: 0 (0|0|0|0|0) [0]

Вернуться на главную
Авторский комментарий к работе: Хм, почему так мало исходников\листингов для Flash?)) P.s.: класс писал сам. 2009-06-13: Обновлена функция 'replace'
Работа опубликована администратором Mir
Вы не можете оценивать

КОММЕНТАРИИ К РАБОТЕ:
Qwerty47 ::: комментарий от 14.06.2009 | 16:52
Qwerty47 Сведущий (ур.9)
Очки: 2294
Город:
Тв. работ: 14
Рег: 23.04.2007 (4420)
сделал пример использования класса - скачать

p.s.: скорость выполнения функции multi_search в AS2 примерно равна примерно 25.000 символов/сек, а в AS3 333.458 символов/сек...


--------------------
"Человек - нечаянная, прекрасная, мучительная попытка природы, осознать самое себя" - В.М.ШУКШИН
Qwerty47 ::: комментарий от 13.06.2009 | 13:52
Qwerty47 Сведущий (ур.9)
Очки: 2294
Город:
Тв. работ: 14
Рег: 23.04.2007 (4420)
обновил функцию 'replace'. Теперь она не дает сбоев (ошибка заключалась в том, что если заменить одну строку на похожую строку, например ZOOM на [ZOOM], то результат будет неверен)


--------------------
"Человек - нечаянная, прекрасная, мучительная попытка природы, осознать самое себя" - В.М.ШУКШИН
Qwerty47 ::: комментарий от 09.06.2009 | 20:06
Qwerty47 Сведущий (ур.9)
Очки: 2294
Город:
Тв. работ: 14
Рег: 23.04.2007 (4420)
все, я исправил проблемы с кодом)) (+дополнил кое-что)

цитирую:
будем пополнять

канеш будем)) скоро может быть выложу класс для создания системы движущихся частиц (во млин, написал как круто), код уже готов давно, нужно его только как класс сделать.


--------------------
"Человек - нечаянная, прекрасная, мучительная попытка природы, осознать самое себя" - В.М.ШУКШИН
Yarick ::: комментарий от 09.06.2009 | 19:54
Yarick Последователь (ур.13)
Очки: 9528
Город: Самара
Тв. работ: 91
Рег: 30.12.2007 (6467)
цитирую:
Хм, почему так мало исходников\листингов для Flash?




будим пополнять
Qwerty47 ::: комментарий от 09.06.2009 | 19:27
Qwerty47 Сведущий (ур.9)
Очки: 2294
Город:
Тв. работ: 14
Рег: 23.04.2007 (4420)
хм, странно, не весь код влез...
--- спустя 5 минут:..
думал ограничение на символы, но исходник суперпаратрупера содержит в два раза больше символов)) странно)
----
цитирую:
о, спс, пригодится!

буду рад)


--------------------
"Человек - нечаянная, прекрасная, мучительная попытка природы, осознать самое себя" - В.М.ШУКШИН
Yarick ::: комментарий от 09.06.2009 | 14:46
Yarick Последователь (ур.13)
Очки: 9528
Город: Самара
Тв. работ: 91
Рег: 30.12.2007 (6467)
о, спс, пригодится!