![]() |
Удвоенные энтеры (переносы строк) при загрузке обычного многострочно текстового файла
Откуда берутся удвоенные переносы строк при загрузке обычного многострочного текстового файла?
Код приведен ниже, а файл можно сделать любой с именем 'Kyiv.txt' и кодировкой UTF-8 с несколькими строками текста. Код:
import flash.display.Sprite; |
Он и символ с кодом 0D и символ с кодом 0A считает переносом.
Вот пример: Код:
txt1.text = "Hello\nworld";Во втором случае есть (и \r и \n воспринимаются как переход на новую строку). Таким образом, нужно провести дополнительную обрпботку - заменить все \r\n на \n. |
Попробовал вот так, и ничего не помогло:
Код:
function loaderCompleteHandler(event:Event):void { |
Код:
str.replace(/[\n\r]/g, ""); // удалит все символы \n и \r |
Так вы удалить хотите все переносы или все-таки двойные? Вы внимательно прочитали второй пост?
|
Получилось!!!
Код:
function loaderCompleteHandler(event:Event):void { |
Хорошо, что я знаю регулярные выражения, я то долго мучался бы.
Точнее будет: Код:
str = str.replace(/(\n\r|\n|\r){2}/g,"\n");Так что я рад ;) Всем спасибо за внимание! |
str = str.replace(/\n\r?/g,"\n");
|
Кстати, очень долго колебался, как же всё-таки правильно: "\n\r" или "\r\n". Никак не мог вспомнить.
Интуиция подсказывала, что всё-таки "\n\r". Здравый смысл ей вторил: сперва новая строка, а затем уже возврат каретки. Однакось: Код:
var s:String = "\n\r";А в файлах (по крайней в винде), всегда идёт 13 10. Так что "\r\n" - более правильно, хоть и почему-то режет глаз. |
А если вспомнить обычную печатную машинку, то сначала делался возврат каретки (\r), потом перевод на новую строку (\n).
|
| Часовой пояс GMT +4, время: 10:21. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.