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

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

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

Регистрация: Feb 2013
Сообщений: 18
По умолчанию Преобразование строки в массив

Доброго времени суток. Есть такая задача:
есть строка
Код AS1/AS2:
var str:String = "05163864080712"
нужно из неё получить массив
Код AS1/AS2:
var result:Array = (5,16,38,64,8,7,12)
Я так понимаю нужно использовать str.split (","), но чё то не выходит...

Старый 27.03.2013, 18:26
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
indexOf для удаления первого нуля + split("")

Но получите числа 5 1 6 3 8 6 4 0 8 0 7 1 2.

Если попарно, то substr()

Код AS3:
var str:String = "05163864080712"
var arr:Array = [];
var length:int = str.length -2 
for(var k:int = 0 ; k <length; k ++){
	var part:String = str.substr(k, 2);
	if(part.indexOf("0") == 0){
		part = part.substr(1, 1);
	}
	arr.push(Number(part))
}
trace(arr)
__________________
hauts.ru

Старый 27.03.2013, 18:52
gagaga вне форума Посмотреть профиль Отправить личное сообщение для gagaga Найти все сообщения от gagaga
  № 3  
Ответить с цитированием
gagaga

Регистрация: Apr 2012
Сообщений: 239
Цитата:
Сообщение от Hauts Посмотреть сообщение
indexOf для удаления первого нуля + split("")

Но получите числа 5 1 6 3 8 6 4 0 8 0 7 1 2.

Если попарно, то substr()

Код AS3:
var str:String = "05163864080712"
var arr:Array = [];
var length:int = str.length -2 
for(var k:int = 0 ; k <length; k ++){
	var part:String = str.substr(k, 2);
	if(part.indexOf("0") == 0){
		part = part.substr(1, 1);
	}
	arr.push(Number(part))
}
trace(arr)
Код AS3:
var str:String = "05163864080712"
var arr:Array = [];
 
for(var k:int = 0 ; k < str.length / 2; k += 2){
	var part:String = str.substr(k, 2);
	arr.push(parseInt(part, 10))
}
trace(arr)

Старый 27.03.2013, 18:31
teamdima вне форума Посмотреть профиль Отправить личное сообщение для teamdima Найти все сообщения от teamdima
  № 4  
Ответить с цитированием
teamdima

Регистрация: Feb 2013
Сообщений: 18
спасибо, но всё равно делаю видно что-то не так, потому что указываю делимитер запятую, а он трейсит и стринг и массив одинаково, без разделителей...

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
здесь не нужно никаких делимитеров.
Делимитером является символ, или набор символов присутствующих в строке, а здесь запятых нет.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Сообщение от caseyryan Посмотреть сообщение
здесь не нужно никаких делимитеров.
Делимитером является символ, или набор символов присутствующих в строке, а здесь запятых нет.
Строго говоря, делиметер это паттерн, который может быть конкретным символом, но не обязан.
Код AS3:
			var str:String = "05163864080712";
			trace(str.replace(/(\d{2})/g, ",$&")); // ,05,16,38,64,08,07,12
То есть решить задачу можно, например, так
Код AS3:
			var arr:Array = str.replace(/(\d{2})/g, ",$&").split(",");
			arr.shift();
			trace(arr);
Таким же регэкспом можно и разбить сразу в массив, только он будет "через один" )))
Код AS3:
var arr:Array = str.split(/(\d{2})/); // ,05,,16,,38,,64,,08,,07,,12,
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 28.03.2013 в 14:16.
Старый 27.03.2013, 18:55
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 7  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
gagaga, "5,16,38,64"

Смысл примерно тот же, как я понимаю (только k++ там должно быть), но по мне так лучше выносить length, а не просчитывать каждый раз.
__________________
hauts.ru

Старый 27.03.2013, 19:36
teamdima вне форума Посмотреть профиль Отправить личное сообщение для teamdima Найти все сообщения от teamdima
  № 8  
Ответить с цитированием
teamdima

Регистрация: Feb 2013
Сообщений: 18
хорошо, а почему не пушит остальные числа?
parseInt игнорирует числа начинающиеся на 0, но там есть ещё в конце "12"

Добавлено через 35 минут
всё, разобрался...
всем спасибо )

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

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

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


 


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


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