Форум 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=184157)

Fartoviy_Spec 12.09.2012 13:05

Неправильное сцепление строк
 
Загружаю текстовый файл состоящий из фамилий
Цитата:

А. Иванов
Б. Петров
Функция при окончании загрузки
Код AS3:

function onComplete(e:Event):void
{
        var str:String = new String(e.target.data);
        var params:Array = str.split('\n',str.length);
        trace(params[0].substring(3)+' '+params[0].substr(0,3))
}

Выводит
Цитата:

Иванов
А.
А нужно, чтобы выводил на одной строке
Цитата:

Иванов А.
Помогите кто знает как исправить

caseyryan 12.09.2012 13:13

Убрать
Код:

"\n"
?

Fartoviy_Spec 12.09.2012 13:16

"\n" этого символа нет
например
Код AS1/AS2:

trace(params[0])

выводит
Цитата:

А. Иванов

caseyryan 12.09.2012 13:18

Конечно нет. Это же символ перехода на другую строку. В текстовом поле он отображаться не будет.
Вопрос, зачем он там вообще добавлен? Для деления текста который записан в столбик?

По представленному коду задача не совсем понятна. Надо глянуть на сам текстовый файл. Может там изначально делится не верно

Fartoviy_Spec 12.09.2012 13:23

Текстовый файл ровно тот, что я вверху написал из двух строк, в коде добавлен этот символ, чтобы разбить текстовый файл на массив состоящий из строк, то есть в данном сучаи массив имеет два элемента.

udaaff 12.09.2012 13:41

попробуйте
Код AS3:

var params:Array = str.split('\r\n');


caseyryan 12.09.2012 14:04

Действительно фигня какая-то.
Набросал решение на уровне костыля, но работает:

содержимое текстовика
Цитата:

А. Иванов
Б. Петров
А. Сидоров
В. Путин

Код AS3:

package  {
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        /**
        * ...
        * @author casey ryan
        */

        [SWF(backgroundColor="0xFFFFFF")]
        public class Main extends Sprite {
 
                public function Main() {
                        var loader:URLLoader = new URLLoader();
                        loader.addEventListener(Event.COMPLETE, onComplete);
                        loader.load(new URLRequest("text.txt"));
                }
 
                private function onComplete(e:Event):void {
                        var rawText:String        = String(e.target.data);
                        var values:Array        = rawText.split('\r\n');
                        for each (var str:String in values) {
                                var noSpaces:String = str.replace(/\s{2,}/g, ' '); // сносим лишние пробелы, больше 2
                                var s:Array = noSpaces.split(" ");
                                if (s.length > 1) {
                                        trace(s[1], s[0]);
                                }
                        }
                }
        }
}

выводит:
Цитата:

Иванов А.
Петров Б.
Сидоров А.
Путин В.

Fartoviy_Spec 12.09.2012 15:26

Главное работает) Спасибо caseyryan. Хотя что сказал udaaff проще

i.o. 12.09.2012 15:45

Это же виндовый перенос строк, там всегда присутсвует \r


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

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