Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   String.replace позиция в кирилице (http://www.flasher.ru/forum/showthread.php?t=150298)

mre 09.02.2011 15:05

String.replace позиция в кирилице
 
Есть такой код:

Код AS3:

var str:String = "Привет :star:";
var pattern:RegExp = /:([\w]+):/gi;
str.replace(pattern, replFunc);
 
function replFunc():String
{
        trace(arguments[2]);
        return " ";
}

Output: 13
Как-то можно сделать, чтобы возвращалось корректное значение или подобного не предусмотрено?

iNils 09.02.2011 15:23

Код AS3:

function replFunc():String {
        trace(arguments[arguments.length-1].indexOf (arguments[0]));
        return " ";
}


mre 09.02.2011 15:30

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

iNils 09.02.2011 15:47

Проблема, как я понимаю, в том, что русский текст двух байтовый, поэтому вместо 7 (6 русских букв + пробел), получается 13 (2*6 русских букв + пробел)

mre 09.02.2011 16:19

Непонятно другое, почему в других методах (lenght, indexOf,...) считает как надо, недоработали...

iNils 09.02.2011 16:34

Разные реализации. lenght и indexOf это чистые методы String, а replace это механизм RegExp.


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

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