Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.12.2014, 00:49
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

'03 ноя 2014'.replace(/(\d+)\s(\W+)\s(\d+)/,mth['$2']) результат undefined
доброго времени суток.
подскажите, почему при подстановке ключа в массив, получаю undefined?
var mth=[];mth['ноя']=11;
alert('03 ноя 2014'.replace(/(\d+)\s(\W+)\s(\d+)/,'$1.'+mth['$2']+'.$3'))

и как правильно построить данный запрос

P.S. результат данной замены: 03.undefined.2014, а требуется получить 03.11.2014

Последний раз редактировалось Cache, 04.12.2014 в 01:24.
Ответить с цитированием
  #2 (permalink)  
Старый 04.12.2014, 01:05
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

var mth=[];mth['ноя']=11;
alert('03 ноя 2014'.replace(/(\d+)\s(\w+)\s(\d+)/,'$1.'+mth['$2']+'.$3'))
Ответить с цитированием
  #3 (permalink)  
Старый 04.12.2014, 01:08
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

не вижу ни одного отличия в вашем коде, и результат хоть и не undefined, но и не тот что должен быть
Ответить с цитированием
  #4 (permalink)  
Старый 04.12.2014, 01:10
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Cache,
Сообщение от Cache
не вижу ни одного отличия в вашем коде, и результат хоть и не undefined, но и не тот что должен быть
Это было на:
Сообщение от Cache
подскажите, почему при подстановке ключа в массив, получаю undefined?
Вы помните иногда, что Вы спрашиваете?


Я пока не понял, что должно быть. Может быть Вы, таки, соизволите пояснить?
Ответить с цитированием
  #5 (permalink)  
Старый 04.12.2014, 01:11
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

krutoy, ноябрь должен быть заменен на 11 (значение ключа массива mth['ноя'])
Ответить с цитированием
  #6 (permalink)  
Старый 04.12.2014, 01:13
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

т.е. Из даты '03 ноя 2014' нужно получить '03.11.2014'

\w+ - здесь не подойдет, т.к. \w - это любой лат. символ, а русские буквы не подподают под понятие - латиница

Последний раз редактировалось Cache, 04.12.2014 в 01:22. Причина: add comment
Ответить с цитированием
  #7 (permalink)  
Старый 04.12.2014, 01:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Cache,
для такой замены используют функцию в replace -- параметры смотрите в документации
Ответить с цитированием
  #8 (permalink)  
Старый 04.12.2014, 01:26
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

рони, как пользоваться replace() - я знаю, и тут она, как бы и применяется, только чуть в другой форме
меня не устраивает вариант
alert('03 ноя 2014'.replace(' ноя ','.11.'));

по причине того, что месяцев, как вы понимаете - 12 и городить огород для перебора каждого значения - бред
Ответить с цитированием
  #9 (permalink)  
Старый 04.12.2014, 01:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от рони
как пользоваться replace() - я знаю
Сообщение от рони
для такой замены используют функцию в replace -- параметры смотрите в документации
Ответить с цитированием
  #10 (permalink)  
Старый 04.12.2014, 01:30
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от Cache
т.е. Из даты '03 ноя 2014' нужно получить '03.11.2014'
var mth={};mth['ноя']=11;
str='03 ноя 2014'
re=/([а-я]+)/
alert(str.replace(re, function(v){return mth[v]}))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск