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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.12.2007, 13:49
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 11  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от Revolter
проблема в том что "Пример" может быть "ПриМеР", т.е. не известно где и сколько там будет заглавных букв. как тогда решить эту задачу?
Я же сказал, сначала идете по "м", потом по "М".
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 07.12.2007, 16:00
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 12  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Зачем сохранять регистр, если подстроки все равно будут удалены?
Автор, обьясни пожалуйста, почему String.toLowerCase() не устраивает?

Вот, наваял заодно что-то... ток зачем это нужно - не пойму %)
Код:
var search_str:String = "abcd";
var replace_str:String = "efgh";
var searched_str:String = "abcd, Abcd, abCD, dcba";
function strConvert(s_str:String, r_str:String, rp_str:String):String {
	var i:Number = 0;
	var rp_arr:Array = rp_str.split("");
	while (i<s_str.length) {
		var check_sum:String = "";
		var mtx:Array = [];
		while (s_str.charAt(i).toLowerCase() == r_str.charAt(0) || check_sum!="") {
			check_sum += s_str.charAt(i);
			if (s_str.charAt(i).toLowerCase() != s_str.charAt(i)) {
				mtx.push(true);
			} else {
				mtx.push(false);
			}
			i++;
			if(i>s_str.length)break;
			if (check_sum.length == r_str.length) {
				var j:Number = 0;
				var sb_str:String = "";
				while (j<rp_arr.length) {
					mtx[j] ? sb_str += rp_arr[j].toUpperCase() : sb_str += rp_arr[j];
					j++;
				}
				s_str = s_str.slice(0, i-r_str.length)+sb_str+s_str.slice(i, s_str.length);
				mtx=[];
				check_sum ="";
			}
		}
		i++;
	}
	return s_str;
}
trace(strConvert(searched_str, search_str, replace_str));
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 07.12.2007 в 16:30.
Старый 07.12.2007, 16:09
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 13  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Потому, что toLowerCase() заменит все символы в строке. А двойной проход будет работать быстрее, чем сложный код выше.
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 07.12.2007 в 16:41.
Старый 07.12.2007, 16:36
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 14  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я просто все равно не совсем понимаю, какого результата желает автор...
Пример: "Василий ПупкиН утоп."
меняем совпадения "пупкин" на "ло".
результат: "Василий Ло утоп". (от того, что последняя буква в фамилии была заглавной ничего не изменилось...
или так: "Все страны бывшего СССР пережили экономический кризис".
меняем "ссср" на "Советского Союза".
получаем: "Все страны бывшего СОВЕтского союза пережили экономический кризис".
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 07.12.2007 в 16:43.
Старый 07.12.2007, 17:46
Revolter вне форума Посмотреть профиль Отправить личное сообщение для Revolter Найти все сообщения от Revolter
  № 15  
Ответить с цитированием
Revolter

Регистрация: Nov 2007
Сообщений: 12
Цитата:
Сообщение от wvxvw
Я просто все равно не совсем понимаю, какого результата желает автор...
Пример: "Василий ПупкиН утоп."
меняем совпадения "пупкин" на "ло".
результат: "Василий Ло утоп". (от того, что последняя буква в фамилии была заглавной ничего не изменилось...
или так: "Все страны бывшего СССР пережили экономический кризис".
меняем "ссср" на "Советского Союза".
получаем: "Все страны бывшего СОВЕтского союза пережили экономический кризис".
У меня реализован поиск - сообщается сколько искомых строк найдено в файлах поиска. Далее юзер выбирает какой файл просмотреть. Файл загружается в TextField с включенным html. Искомое слово выделяется цветом - <font color="#0000FF">искомое слово</font>. Проблема в том, чтобы сделать эту замену нечувствительной к регистру. То есть чтобы "ИсКОмОе СЛоВо" менял на "<font color="#0000FF">ИсКОмОе СЛоВо</font>" и т.п.

сделал (allT - текст где надо выделить search_str):
Код:
function mark(allT:String;search_str:String){
	lenT = length(allT);
	allTemp = allT.toLowerCase();
	searchTemp = search_str.toLowerCase();
	slen = length(search_str);
	num = 0; // с какой позиции искать
	n = 0; // кол-во найденых
	index = allTemp.indexOf(searchTemp, num); // индекс текущего вхождения
	while (index>=0) {
		allT = allT.substr(0,index + n*29) + '<font color="#0000FF">' + allT.substr(index+n*29,slen) + '</font>' + allT.substr(index+slen+n*29 ,length(allT));
		n++;
		num = index+slen;
		index = allTemp.indexOf(searchTemp, num); // индекс текущего вхождения
	};
	return allT
};


Последний раз редактировалось iNils; 07.12.2007 в 18:18.
Старый 07.12.2007, 21:37
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 16  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
var given_str:String = "<font color='#008080'>Hier kommt die Sonne, Hier kommt die Sonne. Rammstein (c)</font>";
var search_str:String = "sOnNe";
var _txt:TextField = _root.createTextField("_txt",0,0,0,200,200);
_txt.border = true;
_txt.multiline = true;
_txt.wordWrap = true;
_txt.html = true;
_txt.htmlText = given_str;
function searchAndReplace(s_str:String, r_str:String):String {
	r_str = r_str.toLowerCase();
	var n:Number = 0;
	var i:Number = 0;
	var j:Number = 0;
	while(i<s_str.length){
		if(s_str.charAt(i).toLowerCase()==r_str.charAt(0) || n!=0){
			trace("found at "+i+" | "+s_str.charAt(i));
			if (s_str.charAt(i).toLowerCase() == r_str.charAt(j)){
				trace("processing "+s_str.charAt(i).toLowerCase());
				n++;
				j++;
			} else {
				n=0;
			}
			if(n == r_str.length){
				s_str = s_str.slice(0,i-r_str.length)+"<font color='#800000'>"+s_str.slice(i-r_str.length,i+1)+"</font>"+s_str.slice(i+1,s_str.length);
				i+=29+n;
				n=0;
				j=0;
			}
		}
		i++;
	}
	return s_str;
}
_txt.htmlText = searchAndReplace(given_str,search_str);
Ну, как вариант
__________________
Hell is the possibility of sanity

Старый 10.12.2007, 10:12
CorC вне форума Посмотреть профиль Отправить личное сообщение для CorC Найти все сообщения от CorC
  № 17  
Ответить с цитированием
CorC
 
Аватар для CorC

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
Цитата:
Сообщение от Revolter
не подходит - важно сохранить регистр букв
Я не заставляю вас менять регистр в исходной строке, можно же создать дубликат этой строки. По ней уже поискать.
__________________
"We Are The Champions My Friends!" Queen

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

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

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


 


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


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