Просмотр полной версии : Неправильное сцепление строк
Fartoviy_Spec
12.09.2012, 13:05
Загружаю текстовый файл состоящий из фамилий А. Иванов
Б. Петров
Функция при окончании загрузки
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" этого символа нет
например
trace(params[0])
выводит
А. Иванов
caseyryan
12.09.2012, 13:18
Конечно нет. Это же символ перехода на другую строку. В текстовом поле он отображаться не будет.
Вопрос, зачем он там вообще добавлен? Для деления текста который записан в столбик?
По представленному коду задача не совсем понятна. Надо глянуть на сам текстовый файл. Может там изначально делится не верно
Fartoviy_Spec
12.09.2012, 13:23
Текстовый файл ровно тот, что я вверху написал из двух строк, в коде добавлен этот символ, чтобы разбить текстовый файл на массив состоящий из строк, то есть в данном сучаи массив имеет два элемента.
попробуйте
var params:Array = str.split('\r\n');
caseyryan
12.09.2012, 14:04
Действительно фигня какая-то.
Набросал решение на уровне костыля, но работает:
содержимое текстовика
А. Иванов
Б. Петров
А. Сидоров
В. Путин
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 проще
Это же виндовый перенос строк, там всегда присутсвует \r
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.