Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Добавление символов некст лайн в строку через определенные промежутки (http://www.flasher.ru/forum/showthread.php?t=162420)

goodguy 01.08.2011 14:03

Добавление символов некст лайн в строку через определенные промежутки
 
Есть строка, образованая из массива с помощью метода 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");
      }
}

Получился какой-то готический ужас :D

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

DaFive 01.08.2011 14:09

Вполне нормально циклом. Может быть на этапе формирования массива сделать i % 150 == 0 arr[i]=arr[i]+"\n";
Мне кажется по нагрузке даже меньше будет чем реплейсы в строке.

i.o. 01.08.2011 14:20

Мог ошибиться, т.к. не проверял. Сама идея такая:
Код 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;


goodguy 01.08.2011 14:20

Цитата:

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

Мне кажется по нагрузке даже меньше будет чем реплейсы в строке.
Да нагрузка там все равно не критична. Это эйр приложение

i.o. 01.08.2011 14:26

Цитата:

i % 150
Извините, но это бред. Крутить 149 раз цикл и только на 150-ый выполнится условие. Я понимаю, что времена сейчас другие, но 149 пустых циклов - это не гуд, определенно.

DaFive 01.08.2011 14:31

Даёшь шаг в цикле по 150!

i.o. 01.08.2011 14:31

уже дал в 3-ем посте :)

goodguy 01.08.2011 14:35

Сделал так:
Код 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 за идею ;)


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

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