Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.08.2010, 13:06
Sociofilm вне форума Посмотреть профиль Отправить личное сообщение для Sociofilm Найти все сообщения от Sociofilm
  № 1  
Ответить с цитированием
Sociofilm

Регистрация: Aug 2010
Адрес: http://sociofilm.ru
Сообщений: 23
По умолчанию Замена подстроки без учета регистра, как?

Вход:
holder - строка, searchfor - подстрока, которую меняем, replacement - на что меняем

1.
Код AS3:
holder.split(searchfor).join(replacement)
работает, но чувствителен к регистру

2.
Код AS3:
var pattern = new RegExp(searchfor, "gim"); holder.replace(pattern, replacement)
работает, но не правильно отрабатывает на этом примере:
holder = [LABEL test]
searchfor=[SCRIPT test.qsp]
replacement={a=1; output a}

Может у кого есть проверенный готовый вариант?

Старый 18.08.2010, 13:18
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 2  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
можно как то по аналогии попробовать:
Код AS3:
		public static function paintHTML_Rec($value:String, $pattern:String, $color:String = "00CCFF"):String 
		{
			var sIndex:int = $value.toLowerCase().indexOf($pattern.toLowerCase());
			if(sIndex == -1) return $value;
			var eIndex:int = sIndex + $pattern.length;
			var result:String = $value.substring(0, sIndex) + "<font color=\"#" + $color + "\">" + $value.substring(sIndex, eIndex) + "</font>" + paintHTML_Rec($value.substring(eIndex, $value.length), $pattern); 
			return result;
		}
тока у меня тут идет подкрашивание, а ты просто на замену сделай.

Старый 19.08.2010, 09:50
Sociofilm вне форума Посмотреть профиль Отправить личное сообщение для Sociofilm Найти все сообщения от Sociofilm
  № 3  
Ответить с цитированием
Sociofilm

Регистрация: Aug 2010
Адрес: http://sociofilm.ru
Сообщений: 23
Ну идея в целом понятна, только вот у тебя предполагается, что всего одна замена во всей строке, а у меня их может быть много, например:
"The more the better", меняем "The" и "the" на "then"

PS Вроде бы простая задача, в других языках реализована, а тут прям гемор какой то...

Старый 19.08.2010, 14:50
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
public function splitParams(s:String,params,replacer) {
 
for (var i=0; i<replacer.length; i++) {
    if(params[i] != undefined) {
     s = s.split(params[i]).join(replacer[i]);
     } else { break; }
}
 
}


Последний раз редактировалось in4core; 19.08.2010 в 15:13.
Старый 19.08.2010, 15:04
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 5  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
Sociofilm если вы внимательнее присмотритесь то функция рекурсивна и заменяет все схождения искомой строки.
in4core и как оно работает?


Последний раз редактировалось nOobCrafter; 19.08.2010 в 15:08.
Старый 19.08.2010, 15:10
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
что как ? задаем че риплейсим и че ищем - [The,the,fuck,off] ищем , [0,0,1,2] реплейсим )))

Добавлено через 3 минуты
например
Код AS3:
var str = ' Привет детишки, %%% будет крышка, если крышка будет на?м**'
 
splitParams(str,['%','П','и'],['^','^',')'])


Последний раз редактировалось in4core; 19.08.2010 в 15:14.
Старый 19.08.2010, 15:24
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 7  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
по моему теперяшняя функция это не тоже самой что было до исправления?)
и всеравно трейс вы походу не проверяли?
Код AS3:
var str = ' Привет детишки, %%% будет крышка, если крышка будет на?м**'
 
splitParams(str,['%','П','и'],['^','^',')'])
trace(str);
по моему не жизнеспособно в ситуации старттопика, мне надо в предложении заменить все слова не смотря на регистр:
Код AS3:
var str:String = "qwerty Qwerty qWerty qwErty ...";
var pattern:String = "qwerty";
требуется предусмотреть все варианты?
------------------------------------------------------------------
уф от делать нечего написал как требуется:
Код AS3:
var str:String = " qwerTYqwerty Qwerty qWerty qwErty ...";
var pattern:String = "qwerty";
function recReplaceSrt($string:String, $pattern:String, $newValue:String):String 
{
	var sIndex:int = $string.toLowerCase().indexOf($pattern.toLowerCase());
	if(sIndex == -1) return $string;
	var eIndex:int = sIndex + $pattern.length;
	var result:String = $string.substring(0, sIndex) + $newValue + recReplaceSrt($string.substring(eIndex, $string.length), $pattern, $newValue); 
	return result;
}
 
trace(recReplaceSrt(str, pattern, "11"));


Последний раз редактировалось nOobCrafter; 19.08.2010 в 15:41.
Старый 20.08.2010, 09:06
Sociofilm вне форума Посмотреть профиль Отправить личное сообщение для Sociofilm Найти все сообщения от Sociofilm
  № 8  
Ответить с цитированием
Sociofilm

Регистрация: Aug 2010
Адрес: http://sociofilm.ru
Сообщений: 23
твой вариант - это первый вариант из моей первой мессаги, модифицированный, он не решает проблему регистронезависимости

Добавлено через 20 минут
Работает, спасибо Вот только рекурсия меня смущает, перепишу в одном цикле, плюс оптимизирую код (чтоб несколько раз в lowercase не гонять)

Старый 20.08.2010, 14:06
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 9  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
погоняйте тесты и посомрите надо ли она вам? 2 мс меня как то не особо смущают, тем более что там не каждую секунду вырезание происходит.

Старый 23.08.2010, 08:18
Sociofilm вне форума Посмотреть профиль Отправить личное сообщение для Sociofilm Найти все сообщения от Sociofilm
  № 10  
Ответить с цитированием
Sociofilm

Регистрация: Aug 2010
Адрес: http://sociofilm.ru
Сообщений: 23
Тесты погонял, все ок, переписывать не стал, так устраивает, производительность не особо нужна оказалась

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:35.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.