Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как подсветить все совпадения строки в текстовом поле (http://www.flasher.ru/forum/showthread.php?t=157212)

Darkwing Duck 02.06.2011 04:09

Как подсветить все совпадения строки в текстовом поле
 
Всем привет..
У меня возникла проблема.. собственно,
делаю поиск по текстовому полю, и необходимо чтоб все совпадения с заданным шаблоном в текстовом поле как-то подсветились.. например, изменить цвет, или ещё чтото..
может кто уже сталкивался - как реализовали...
вобщем помогите советами)

wvxvw 02.06.2011 10:48

В цикле используем exec() и смотрим lastIndex свойство выражения. Ну а дальше, как установить TextFormat подстроке, я думаю, объяснять не нужно?

DaFive 02.06.2011 10:50

Можно так:
Код AS3:

var str:String = "Строка 123 Вася Петя";
str = str.replace("123", "<font color=\"#ff0000\">123</font>");
 
var tf:TextField = new TextField();
tf.htmlText = str;
 
addChild(tf);

[IMG]http://*************/clip/m57729/1306993822-clip-7kb.jpg[/IMG]

Можно регуляркой (RegExp).

Darkwing Duck 02.06.2011 14:58

Спасибо.. Мне больше подходит метод, предложенный wvxvw, т.к. в тексте могут присутствовать html теги и нужно их выводить как текст..

вобщем все работает, только почемуто не находятся в строке знаки "[" и "+", возможно есть ещё..

ищу так:
Код AS3:

searchString.search(value.toLowerCase());

странно както.. прощу помощи..

wvxvw 02.06.2011 20:36

Код AS3:

private function testFind():void
{
        var input:String = "Plus followed by square bracket: +]. Yet another plus + and a bracket ], once again, but together: +]";
        var expression:RegExp = /\+\]/g;
        var result:Object;
        var output:Array = [];
        var lastIndex:int;
        var match:String = "";
 
        while (result = expression.exec(input))
        {
                match = String(result);
                trace(result, result.length, expression.lastIndex);
                output.push(
                        input.substring(lastIndex,
                                expression.lastIndex - match.length),
                        input.substr(expression.lastIndex - match.length, match.length));
                lastIndex = expression.lastIndex + match.length;
        }
        output.push(input.substr(input.length -
                (expression.lastIndex - match.length)));
        trace(output.join("\r-----\r"));
}

Код:

Plus followed by square bracket:
-----
+]
-----
Yet another plus + and a bracket ], once again, but together:
-----
+]
-----



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

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