Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Перенос строки в xml (http://www.flasher.ru/forum/showthread.php?t=215391)

ZergMaster 09.04.2018 12:39

А можно сделать соувсем уж извращение. Добавить в xml строку какой-нибудь левый разделитель, вместо \n, например #. И потом, при постановке в текстовое поле делать что-то вроде

Код AS3:

textField.text = makeWordWrap(xmlText);
 
function makeWordWrap(xmlText:String, delim:String='#'):String
{
    var result:String = '';
    xmlText.split(delim).forEach(function (item:String. i:int, arr:Array)
      {
              var newLine:String = i ? '\n' : '';
              result += newLine+item;
      });
 
    return result;
}


undefined 09.04.2018 12:49

Цитата:

Сообщение от caseyryan (Сообщение 1204879)
В качестве догадки могу предположить, что при конвертации текста в XML делается экранирование спецсимволов, чтобы этот \n попал в текст как есть. Тобишь на выходе получается не \n, а \\n, но трейсится, естественно, как простой \n

Как я понял засада что если грузить данные извне,то перенос не засчитывается, а при хардкоде строки ручками все ок.

caseyryan 09.04.2018 12:52

Цитата:

Сообщение от undefined (Сообщение 1204883)
Как я понял засада что если грузить данные извне,то перенос не засчитывается, а при хардкоде строки ручками все ок.

Потому что срабатывает штатный XML парсер, и добавляет экраны ко всем спецсимволам

in4core 09.04.2018 12:55

Да сделайте сдата в конце концов! Что за детский сад

Wolsh 09.04.2018 13:16

Цитата:

и добавляет экраны ко всем спецсимволам
всё сложнее: ни replace(), ни indexOf() вообще не находят "\n" в строке.

Добавлено через 18 минут
upd: indexOf() находит "\\n"

undefined 09.04.2018 13:43

так кто его подставляет то URLLoader или XML?

caseyryan 09.04.2018 13:46

Цитата:

Сообщение от Wolsh (Сообщение 1204887)
всё сложнее: ни replace(), ни indexOf() вообще не находят "\n" в строке.

Добавлено через 18 минут
upd: indexOf() находит "\\n"

А если попробовать через юникод? \u000d

Wolsh 09.04.2018 13:49

Цитата:

так кто его подставляет то URLLoader или XML?
URLLoader.
Еще до преобразования data в XML индексОф() находит \\n вместо \n.

Godwarlock 09.04.2018 13:55

in4core cdata слишком много лишнего мусора в тексте.
Тут всё же прозвучало решение, которое я использовал до всей этой дилемы с загрузкой через loader) Самый простой вариант, это просто вставить символ, который в тексте никогда не будет использоваться и просто подменять его.
Код AS3:

public static function getText(text:String):String
                {
                        var str:String = ui[text];
                        var result:String = "";
                        for (var i:int = 0; i < str.length;i++ )
                        {
                                var char:String = str.charAt(i);
                                if (char == "$")
                                {
                                        var replaced:String = char.replace("$", "\n");
                                        result += replaced;
                                }else
                                {
                                        result += char;
                                }
                        }
                        return result;
                }


caseyryan 09.04.2018 13:57

попробуй так:
Код AS3:

text = text.replace(/\\\n/gi, "\n");

Самому сейчас никак не проверить

Цитата:

Сообщение от Godwarlock (Сообщение 1204892)
in4core cdata слишком много лишнего мусора в тексте.
Тут всё же прозвучало решение, которое я использовал до всей этой дилемы с загрузкой через loader) Самый простой вариант, это просто вставить символ, который в тексте никогда не будет использоваться и просто подменять его.
Код AS3:

public static function getText(text:String):String
                {
                        var str:String = ui[text];
                        var result:String = "";
                        for (var i:int = 0; i < str.length;i++ )
                        {
                                var char:String = str.charAt(i);
                                if (char == "$")
                                {
                                        var replaced:String = char.replace("$", "\n");
                                        result += replaced;
                                }else
                                {
                                        result += char;
                                }
                        }
                        return result;
                }


Жесть) Лучше замени этот г-код на регулярку:
Код AS3:

public static function getText(text:String):String {
    return ui[text].replace(/\$/gi, "\n");
}



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

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