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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.12.2012, 00:43
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 11  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.Event;
 
	/**
	 * @author KorDum
	 */
 
	public class Main extends Sprite {
		private var _charHash:Object = {
			"001" : "A",
			"002" : "B",
			"003" : "C"
		}
 
		//---------------------------------------------------------------------------
		//
		// CONSTRUCTOR
		//
		//---------------------------------------------------------------------------
 
		public function Main():void {
			trace(parse("001\\003\\002\\\\002\\001"));
		}
 
 
		//---------------------------------------------------------------------------
		//
		// PRIVATE METHODS
		//
		//---------------------------------------------------------------------------
 
		private function parse(str:String):String {
			var wordList:Array = str.split(/\\\\/);
			var result:String = "";
 
			for (var i:uint = 0; i < wordList.length; i++) {
				var charList:Array = (wordList[i] as String).split(/\\/);
 
				for (var j:uint = 0; j < charList.length; j++) {
					result += _charHash[ charList[j] ];
				}
 
				result += " ";
			}
 
			return result;
		}
	}
}
Набросал за пару минут. При допиле можно тримить последний пробел (или не добавлять его вообще).

Добавлено через 37 секунд
ЗЫ. пардон, я слеши перепутал. Соответственно и экранировка не нужна. Но смысл должен быть понятен.
__________________
тут я

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

Регистрация: Aug 2012
Адрес: Санкт-Петербург
Сообщений: 12
Угу. спс. Сейчас буду пробовать. Ночь длиииная! ))

Старый 06.12.2012, 00:45
am_devcorp вне форума Посмотреть профиль Отправить личное сообщение для am_devcorp Найти все сообщения от am_devcorp
  № 13  
Ответить с цитированием
am_devcorp
 
Аватар для am_devcorp

Регистрация: Jan 2012
Адрес: (0;0;0) относительно меня
Сообщений: 82
Отправить сообщение для am_devcorp с помощью Skype™
На самом деле надо просто пройтись по строке поиском по "/" и сравнивать индекс с предыдущим значением, если разница на 1, то значит пробел, если больше — значит берем substring и получаем код символа.

да и вообще, прямой слеш не спецсимвол же, обратный — спецсимвол, так ведь?
__________________
cats are supreme beings

Старый 06.12.2012, 00:47
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 14  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Я и написал, что в первом посте углядел в обычном слеше обратный.
__________________
тут я

Старый 06.12.2012, 01:02
am_devcorp вне форума Посмотреть профиль Отправить личное сообщение для am_devcorp Найти все сообщения от am_devcorp
  № 15  
Ответить с цитированием
am_devcorp
 
Аватар для am_devcorp

Регистрация: Jan 2012
Адрес: (0;0;0) относительно меня
Сообщений: 82
Отправить сообщение для am_devcorp с помощью Skype™
Вот моя версия:
Код AS3:
package {
	import flash.display.Sprite;
    public class Main extends Sprite {
		private var codepage:Object = {
			"001" : "H",
			"002" : "E",
			"003" : "L",
			"004" : "O",
			"005" : "W",
			"006" : "R",
			"007" : "D"
		}	
        public function Main() {
			trace(decode("/001/002/003/003/004//005/004/006/003/007/"))
        }
		public function decode(str:String):String{
			var prevIndex:int = 1
			var newIndex:int = str.indexOf("/", prevIndex)
			var result:String = ""
			while (newIndex!=-1) {
				if (newIndex-prevIndex == 0) {
					result+=" "
				} else {					
					result += codepage[str.substring(prevIndex, newIndex)]
				}
				prevIndex = newIndex+1
				newIndex = str.indexOf("/", prevIndex)
			}
			return result
		}
    }
}
__________________
cats are supreme beings

Старый 06.12.2012, 15:59
XoJlToH вне форума Посмотреть профиль Отправить личное сообщение для XoJlToH Найти все сообщения от XoJlToH
  № 16  
Ответить с цитированием
XoJlToH
 
Аватар для XoJlToH

Регистрация: Sep 2006
Сообщений: 145
Либо можно бить строку на набор массивов и работать с ними
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	/**
	 * ...
	 * @author xo11
	 */
	public class Main extends Sprite
	{
		private var inputString:String = "001/003/005//012/032//852//012/564/";
		private var wordsArray:Array;
		private var outputString:String="";
		public function Main():void
		{
			if (stage)
				init();
			else
				addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			wordsArray = split_words(inputString);
			for (var i:int = 0; i < wordsArray.length; i++)
			{
				wordsArray[i] = split_symbols(wordsArray[i])
				for (var j:int = 0; j < wordsArray[i].length; j++)
				{
					wordsArray[i][j] = replace_code(wordsArray[i][j]);
					outputString += wordsArray[i][j];
				}
				outputString+=" "
			}
			trace (outputString)
		}
 
		private function replace_code($str:String):String
		{
 
			switch ($str)
			{
				case "001": 
					$str = "a"
					break;
				case "003": 
					$str = "b"
					break;
				case "005": 
					$str = "c"
					break;
				case "012": 
					$str = "d"
					break;
				case "032": 
					$str = "e"
					break;
				case "852": 
					$str = "f"
					break;
				case "564": 
					$str = "g"
					break;
				default: 
			}
			return $str;
		}
 
		private function split_words($str:String):Array
		{
			return $str.split("//")
		}
 
		private function split_symbols($str:String):Array
		{
			return $str.split("/")
		}
 
	}
 
}
черт, не заметил вторую страницу )

Старый 06.12.2012, 16:59
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 17  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Чо-то не пойму где проблема. Регуляркой выцепляем то, что является пробелом, потом по всему объекту соответствия регуляркой запиливаем цифры на буквы, потом убираем оставшиеся одиночные слеши.
Код AS3:
private var codepage:Object = {
	"001" : "H",
	"002" : "E",
	"003" : "L",
	"004" : "O",
	"005" : "W",
	"006" : "R",
	"007" : "D"
}	
 
private function init():void {
	var source:String = '001/002/003/003/004//005/004/006/003/007';
 
	source = source.replace(/(\/{2,})/g, " ");
 
        trace(source); //     001/002/003/003/004 005/004/006/003/007
 
	for (var prop:String in codepage) {
		source = source.replace(new RegExp(prop, 'g'), codepage[prop]);
	}
 
        trace(source.replace(new RegExp("/","g"), "")); //HELLO WORLD
}
Можно конечно и одной регуляркой извратиться, но результат тот же.
__________________
Кодинг, багинг, алгоритминг. me @


Последний раз редактировалось DaFive; 06.12.2012 в 17:26.
Старый 08.12.2012, 18:09
Orfei вне форума Посмотреть профиль Отправить личное сообщение для Orfei Найти все сообщения от Orfei
  № 18  
Ответить с цитированием
Orfei
 
Аватар для Orfei

Регистрация: Aug 2012
Адрес: Санкт-Петербург
Сообщений: 12
Блин! Три ночи в тихой истерике! 20 литров кофе и результат = 0!!!

Толи руки не так заточены, толи я чего не понимаю...

Из ситуации с пробелом вышел банально:
Код AS1/AS2:
object["//"] = " ";
А вот заставить буквы не заменяться, складываться в слова не получается!
Опять же слеш который закрывает кодировку буквы (001/) как заставить читать далее???

я пишу так:
Код AS3:
public function WCode()
		{	object = new Object();
			object["001"] = "а";
			object["002"] = "б";
			object["003"] = "в";
			object["004"] = "г";
 
			object["//"] = " ";
			object["/"] = KonecKoda;  //ссылаюсь на функцию 
 
 
			input = okno1.input_txt;
			output = okno2.input_txt;
 
			input.text = "";
			output.text = "";
***************************************************
            public function KonecKoda()        // собственно тут должна быть и сама функция. 
но совершенно непонятно как ее описать. увидел слеш(/), давай читай все что дальше 
до следующего слеша в вводимом поле input и ставь полученное, добавляя, а не заменяя
 в поле output!
Все что предлагалось ранее перепробовал во всех возможных вариациях... не получилось.

Код вернул прежний. вот:
Код AS3:
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.text.TextField;
 
	public class WCode extends MovieClip
	{
		private var input:TextField;
		private var output:TextField;
 
		private var object:Object;
 
		public function WCode()
		{	object = new Object();
			object["001"] = "а";
			object["002"] = "б";
			object["003"] = "в";
			object["004"] = "г";
 
			object["//"] = " ";
			object["/"] = KonecKoda; //ссылаюсь на функцию
 
 
			input = okno1.input_txt;
			output = okno2.input_txt;
 
			input.text = "";
			output.text = "";
 
			input.addEventListener(Event.CHANGE, onTextChange);
		}
 
		private function onTextChange(e:Event):void
		{
			var text:String = object[input.text];
 
			if (text)
			{
				output.text = text;
			}
 
 
		}
		{
			public function KonecKoda()  //проблема тут!!!
		}
 
	}
}
Не пинайте меня пожалуйста сильно, я код ActionScript первый раз увидел этим летом! Спс.

Старый 08.12.2012, 18:16
XoJlToH вне форума Посмотреть профиль Отправить личное сообщение для XoJlToH Найти все сообщения от XoJlToH
  № 19  
Ответить с цитированием
XoJlToH
 
Аватар для XoJlToH

Регистрация: Sep 2006
Сообщений: 145
эээ а почитать ответы выше, не? там штук 5 различных вариантов

Старый 08.12.2012, 18:20
Orfei вне форума Посмотреть профиль Отправить личное сообщение для Orfei Найти все сообщения от Orfei
  № 20  
Ответить с цитированием
Orfei
 
Аватар для Orfei

Регистрация: Aug 2012
Адрес: Санкт-Петербург
Сообщений: 12
дык не выходит нифига! Я понимаю что там где-то все есть. Но никак! Совсем не получается!!!

Добавлено через 5 минут
я практически даже уверен что решение вот-вот рядом и банально простое, но я что-то его не вижу. совсем! (((

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

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

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


 


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


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