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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.08.2011, 14:03
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 1  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Question Добавление символов некст лайн в строку через определенные промежутки

Есть строка, образованая из массива с помощью метода join(","); Массив, содердит только целые числа от 5 до 11, соотвественно строка получается такая: 5,5,5,6,7,11,... и т.д. и ее длина может достигать 250 000 символов и больше. Программе, естественно, пофиг как она записана, в одну строку или в несколько, но мне, для удобства работы с файлом XML в который она записывается, нужно ставить в ней перенос через каждые 150 - 200 символов.
Но что-то пока не получается придумать нормального решения проблемы.
Пробовал так:
Код AS3:
var strLength:int = gridString.length;
for (var i:int = 0; i < strLength; i++) {
      if (i % 150 == 0) {
              gridString = gridString.replace(gridString.charAt(i), gridString.charAt(i) + "\n");
      }
}
Получился какой-то готический ужас

Может у кого-нибудь есть идеи по-лучше как это реализовать?

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

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Вполне нормально циклом. Может быть на этапе формирования массива сделать i % 150 == 0 arr[i]=arr[i]+"\n";
Мне кажется по нагрузке даже меньше будет чем реплейсы в строке.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 01.08.2011, 14:20
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 3  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Мог ошибиться, т.к. не проверял. Сама идея такая:
Код AS3:
var strTmp:String = gridString;
var strOut:String = "";
while (strTmp.length > 150)
{
	var i:int = strTmp.indexOf(',', 150);
 
	strOut += strTmp.slice(0, i) + "\n";
	strTmp = strTmp.slice(i + 1);
}
strOut += strTmp;

Старый 01.08.2011, 14:20
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Вполне нормально циклом. Может быть на этапе формирования массива сделать i % 150 == 0 arr[i]=arr[i]+"\n";
Во блин. А действительно, что-то это даже в голову не пришло. Сейчас попробую.
Цитата:
Мне кажется по нагрузке даже меньше будет чем реплейсы в строке.
Да нагрузка там все равно не критична. Это эйр приложение


Последний раз редактировалось goodguy; 01.08.2011 в 14:22.
Старый 01.08.2011, 14:26
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
i % 150
Извините, но это бред. Крутить 149 раз цикл и только на 150-ый выполнится условие. Я понимаю, что времена сейчас другие, но 149 пустых циклов - это не гуд, определенно.

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

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Даёшь шаг в цикле по 150!
__________________
Кодинг, багинг, алгоритминг. me @

Старый 01.08.2011, 14:31
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 7  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
уже дал в 3-ем посте

Старый 01.08.2011, 14:35
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 8  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Сделал так:
Код AS3:
var step:int = 100;
var nextLinesNum:int = Math.floor(accessGrid.length / step);
for (var i:int = 1; i <= nextLinesNum; i++) {
	accessGrid[i * step] += "\n";
}
var gridString:String = accessGrid.join(",");
Всем спасибо за участие.
DaFive + 4 за идею


Последний раз редактировалось goodguy; 01.08.2011 в 14:43.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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