Показать сообщение отдельно
Старый 27.06.2014, 11:00
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 3  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Вот. Не слишком элегантно, но отладил и работает.

Код AS1/AS2:
// Набор НЕбукв (включая пробел) 
var delimiters:Array = ",._ -+?(){}[]".split("")	
 
// Хэш-объект для проверки на принадлежность символа к разделителям без перебора 
// ВСЕХ описанных разделителей
var delHash:Object = new Object()
// Формируем хэш-объект
for ( var i=0; i<delimiters.length; i++ ) delHash[ delimiters[i] ] = true
 
 
// Проверка символа на принадлежность к разделителям
function charIsDelimiter( char ){
	if ( delHash[char] == true ) return false; else return true;
}
 
function searchAndReplace( src, from, to ){
 
	trace( "\n SOURCE STRING:"+src )
 
	var idx
	var pos = 0
	do
	{
		idx = src.indexOf( from, pos )
		if ( idx >=0 ){
			pos = idx+from.length
 
			var leftChar = false
			var rightChar = false
 
			// Проверяем крайние символы слова на разделители, если их индексы 
			// лежат в диапазоне граничных индексов строки
			if ( idx !=0 ) leftChar = charIsDelimiter( src.charAt( idx-1 ) )
			if ( idx+from.length != src.length ) rightChar = charIsDelimiter( src.charAt( idx+from.length ) )
 
			if ( !leftChar && !rightChar ) src = src.substr(0,idx)+to+src.substr(idx+from.length, src.length)
		}
	}
	while ( idx!=-1 )
        // Продолжаем поиск по строке, пока искомая сигнатура в ней не перестанет находиться
 
	trace( "RESAULT STRING:"+src )
}
 
 
var sourceText = "круг, круглый, __круг___кругляшок, округлый, (круг";
 
searchAndReplace( sourceText, "круг","квадрат" )
Код:
 SOURCE STRING:круг, круглый, __круг___кругляшок, округлый, (круг
RESAULT STRING:квадрат, круглый, __квадрат___кругляшок, округлый, (квадрат
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2