Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   пробелы... (http://www.flasher.ru/forum/showthread.php?t=63611)

spartan 11.10.2004 07:53

пробелы...
 
Вот такая трабла :
у меня , допустим , есть строка -
"флэша рулит по-полной"
как видите, между каждыми словами немеренно пробелов, как же мне преобразовать это в -
"флэша рулит по-полной"
то-есть убить лишние пробелы, и оставить между словами только по-одной штучке ? ? ?

Всё дело в том что каждый раз точное количество пробелов между этими словами мне не известно, но в конце-концов надо получить по-одному пробелу между каждым словом.

Уф-ф-ф..
Вроде понятно всё описал.

Люди добрые помогите плизззз ! ! !

spartan 11.10.2004 07:59

гыгы...
Вот именно такая система, как на форуме мне и нужна.
:)
В первом сообщении у меня между словами ("флэша рулит")немерянно пробелов, а форумный код сократил их до одного между каждым словом.
Можно ли во флэше сделать так-же.

FreeLander 11.10.2004 11:15

класс String - там для этого всё есть

spartan 11.10.2004 14:22

thanks FreeLander !
Объясни плз поподробнее , если не трудно...
А то я не совсем понимаю...

spartan 11.10.2004 22:03

Где же твоя спасительная рука помощи FreeLander !!?
Я весь внимание !!!

silin 11.10.2004 22:53

вариант:
Код:

s="флэша    рулит      по-полной  "
var a=s.split(" "),n=0
while(n<a.length){
        while(a[n]!="")n++
        while(a[n]=="")a.splice(n,1)
}
s=a.join(" ")
trace(s)//флэша рулит по-полной


Nox Noctis 12.10.2004 11:51

я бы сделал так:
Код:

s = "флэша    рулит      по-полной  ";
String.prototype.compact = function() {
        var str = this.valueOf();
        var heap = str.split("  ");
        while (heap.length>1) {
                str = heap.join(" ");
                heap = str.split("  ");
        }
        return str;
};
trace(s.compact());

быстрее :)

spartan 12.10.2004 11:58

silin ! ! !
вах-х-х !
спасибо !
Но я тебя ещё слегка грузану...
А что делать если человек нажал "enter" и перешёл на другую строку ?
Это как бы тоже пробел, или нет ?
И ,если не трудно , опиши ,пож , как твоя система работает, очень хочется самому понять....
Еще раз благодарю...

spartan 12.10.2004 12:04

Nox !
А тебе отдельная благодарность...
Твой код реально быстрее ?
Или :) ?
Твой пост пришёл как раз тогда когда я отвечал на мессагу silin'а ....

Nox Noctis 12.10.2004 12:22

Цитата:

Оригинал написал(а) spartan
Твой код реально быстрее ?
это нетрудно проверить..
Код:

test = "флэша    рулит      по-полной  ";
String.prototype.compact1 = function() {
        var a = this.split(" "), n = 0;
        while (n<a.length) {
                while (a[n] != "") {
                        n++;
                }
                while (a[n] == "") {
                        a.splice(n, 1);
                }
        }
        return a.join(" ");
};
String.prototype.compact2 = function() {
        var str = this.valueOf();
        var heap = str.split("  ");
        while (heap.length>1) {
                str = heap.join(" ");
                heap = str.split("  ");
        }
        return str;
};
this.onMouseDown = function() {
        s = getTimer();
        for (var i = 0; i<1000; i++) {
                test.compact1(); // в среднем 612 мсек
                // test.compact2(); // в среднем 175мсек
        }
        e = getTimer();
        trace(e-s);
};

пощелкай по сцене, посмотри какие числа выпадают.

потом раскоментируй вызов compact2 и закомментируй вызов compact1.

сравни


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

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