Показать сообщение отдельно
Старый 04.07.2014, 19:11
razve вне форума Посмотреть профиль Отправить личное сообщение для razve Найти все сообщения от razve
  № 7  
Ответить с цитированием
razve
 
Аватар для razve

Регистрация: Jun 2014
Сообщений: 52
dark256, еще раз спасибо, вроде разобрался:
Код AS1/AS2:
var sourceText = "круг, круглый, __круг___кругляшок. округлый, (круг, овал овальный, полумесяц сфера, цилиндр цилиндрический, тор";
arr = new Array(['круг','овал','полумесяц'], ['сфера','цилиндр','тор']);
arrz = new Array(['квадрат','треугольник','прямоугольник'], ['пирамида','конус','параллепипед']);
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() {
	trace("\n SOURCE STRING:"+sourceText);
	var idx;
	var pos = 0;
	for (i=0; i<=sourceText.length; i++) {
		for (j=0; j<=sourceText.length; j++) {
			do {
				idx = sourceText.indexOf(arr[i][j], pos);
				var r:Number = Math.floor(Math.random()*arrz[i].length);
				if (idx>=0) {
					pos = idx+arr[i][j].length;
					var leftChar = false;
					var rightChar = false;
					if (idx != 0) {
						leftChar = charIsDelimiter(sourceText.charAt(idx-1));
					}
					if (idx+arr[i][j].length != sourceText.length) {
						rightChar = charIsDelimiter(sourceText.charAt(idx+arr[i][j].length));
					}
					if (!leftChar && !rightChar) {
						sourceText = sourceText.substr(0, idx)+arrz[i][r]+sourceText.substr(idx+arr[i][j].length, sourceText.length);
					}
				}
			} while (idx != -1);
 
		}
	}
	trace("RESAULT STRING:"+sourceText);
}
searchAndReplace();
Добавлено через 64 часа 46 минут
Не получается( При перестановке в массиве, слово (например, "круг") не ищет.
Исходный массив:
Код AS1/AS2:
arr = new Array(['овал', 'круг' ,'полумесяц'], ['сфера','цилиндр','тор']);
Ни так:
Код AS1/AS2:
arr = new Array(['овал', 'круг' ,'полумесяц'], ['сфера','цилиндр','тор']);
Ни так:
Код AS1/AS2:
arr = new Array(['овал','полумесяц'], ['сфера','цилиндр','тор'],['круг']);