Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> String.fromCharCode в замене у str.replace 
V
    Опции темы
Ciber SLasH
Дата 21.12.2013, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Приветствую всех!
Подскажите пожалуйста, почему не работает такой код:
Код
var st = ";{0x21}@{0x22}";
var reg = new RegExp("\{(0x[a-f0-9]+)\}", "gi");
alert(st.replace(reg, String.fromCharCode(Number("$1"))));

если оставить так:
Код
alert(st.replace(reg, Number("$1")));

то появляет NaN в результирующей строке. Почему?
Смысл в том, чтобы заменять паттэрны {16-чное представление числа в виде строки} в исходной строке на символ.
PM   Вверх
AVA12
Дата 21.12.2013, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 4.5.2008

Репутация: 2
Всего: 4



Трюк с $1 работает только в том случае, если такая запись присутствует во втором аргументе метода replace(). У тебя же вторым аргументом является результат вызова функции Number с аргументом '$1', то есть NaN.

Правильный вариант - задавать в качестве второго аргумента функцию. Например:
Код
alert(st.replace(reg, function(match, sub1) {
  return Number(sub1)
}))

PM ICQ Jabber   Вверх
Ciber SLasH
Дата 22.12.2013, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



AVA12, благодарю!
Вопрос решён.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0696 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.