Просмотр полной версии : обработка Asом текста Xml документа
Уважаемые, следующий вопрос возник.
Импортирую XML документ в Dynamic Text. Строка отображающяяся в текстовом поле имеет длину xml строки. Переход на следующую строку в xml отображается как пропуск строки. Как грамотно отображать текст?
KidsKilla
02.08.2005, 21:16
а?
ничего не понял. у тебя лишние переводы строк, что-ли?
KidsKilla
02.08.2005, 21:23
XML.ignoreWhite = true;
KidsKilla
02.08.2005, 21:26
или так:
function trim(txt){
while(txt.charCodeAt(0)<33) txt = txt.substs(1, txt.length);
while(txt.charCodeAt(txt.length-1)<33) txt = txt.substs(0, txt.length-1);
return txt;
}
my_txt = trim(" то что нужно \n \t ");
KidsKilla
02.08.2005, 21:28
если ты про двойные переводы строк внутри текста, то напишу как приеду домой.
попробуй как в примере:
String.prototype.replace = function (findWhat, replaceWith) {
if (findWhat != undefined and findWhat != "") {
this = (this.split (findWhat)).join (replaceWith);
}
return this;
};
d = "1\n\n2";
trace (d);
f=d.replace ("\n\n", "\n");
trace (f);
KidsKilla
03.08.2005, 02:12
вариант посовершеннее
function killNewlines(txt){
var newTxt:String = "";
var flag:Boolean = false;
var v:String;
for(var i = 0; i<txt.length; i++){
v = txt.charAt(i);
if(txt.charCodeAt(i)>33) {
newTxt += v;
flag = false;
} if((v == "\n" || v == "\r")&&!flag){
flag = true;
newTxt += "\n";
}
}
return newTxt
}
trace(killNewlines("первая строка\n \t\r\nвторая строка"));
KidsKilla
03.08.2005, 02:48
тем что прокатывают даже такие строки:
"xxx\n \nxxx"
// и такие:
"xxx \n\n xxx"
// и такие:
"xxx\n\r\r\n\n\n\n\rxxx"
мой пример является примером обыкновенной замены символов.
твой, убиранием в последовательности строк форматирования всех символов кроме одного.
но если требуется обработать простую замену, твоя функция в работает в 10-12 раз медленее.
KidsKilla
03.08.2005, 14:23
2inspace огромное пожалуйста =)
2 iNils это ф-ция для конкретной задачи -- убирания повторяющихся, в том числе пробельных строк, а не "убиранием в последовательности строк форматирования всех символов кроме одного". она удаляет строки как в формате юникса, так и виндовом. если, к примеру в тексте встретится конструкция вида:
"текст
текст"
где в средней строке затесался пробел (что часто бывает при копи-пейсте), то твоя ф-ция не удалит такую последовательность, а моя удалит.
конечно, она несравнимо медленнее, но более универсальна.
словом, выбор за автором.
повторяющихся? то есть в последовательности убирается дубликаты?
KidsKilla
03.08.2005, 14:41
кстати вариант ускоренный на 35%, мо медленнее 1го в 14 =))) раз:
function killNewlines(txt){
var newTxt = "";
var flag = false;
var i = txt.length;
while(i--){
if(txt.charCodeAt(i)>33) {
newTxt += txt.charAt(i);
flag = false;
continue;
} else if(!flag&&(txt.charAt(i) == "\n" || txt.charAt(i) == "\r")){
newTxt += newline;
flag = true;
continue;
}
}
return newTxt
}
блин, не так сказал, дубликаты не киляются. пустые киляются.
\n\n\n становится \n
\n\n тоже \n
а у тя \n\n\n станет \n\n (что, по сути, баг)
вот в этом преимущество...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.