Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> конвертировать русские даты в цифровой формат, как сделать функцию более элегантной? 
:(
    Опции темы
Suppir
Дата 15.7.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Привет!

Есть строки вида "3 января 2010 г.", "12 мая 2010 года", 

Строки нужно преобразовать в "03.01.2010", "12.05.2010" 

Есть следующая страшная функция:

sub convertDate{
    $a = $_[0];
    $a =~ s/(\d) января (\d)/$1.01.$2/;     
    $a =~ s/(\d) февраля (\d)/$1.02.$2/;    
    $a =~ s/(\d) марта (\d)/$1.03.$2/;      
    $a =~ s/(\d) апреля (\d)/$1.04.$2/;      
    $a =~ s/(\d) мая (\d)/$1.05.$2/;        
    $a =~ s/(\d) июня (\d)/$1.06.$2/;       
    $a =~ s/(\d) июля (\d)/$1.07.$2/;       
    $a =~ s/(\d) августа (\d)/$1.08.$2/;    
    $a =~ s/(\d) сентября (\d)/$1.09.$2/;   
    $a =~ s/(\d) октября (\d)/$1.10.$2/;    
    $a =~ s/(\d) ноября (\d)/$1.11.$2/;     
    $a =~ s/(\d) декабря (\d)/$1.12.$2/;    
    $a = "0$a" if $a=~ /^\d\./;            
    $a =~ s/(\d{4})\s*г?о?д?а?\./$1/;
    return $a
}

Как записать более элегантно?


PM MAIL   Вверх
arto
Дата 15.7.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



через хэш?
PM MAIL ICQ   Вверх
sir_nuf_nuf
Дата 15.7.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 14
Всего: 31



Код

my %mons = map {qw(
    декабря января февраля
    апреля марта мая
    июня июля августа
    сентября октябра ноября
)[$_ - 1] => $_} (1 .. 12);

sub blabla {
    my $dt = shift;
    $dt =~ s/(\d)\s+(\S+)\s+(\d)/"$1." . ($mons{$2} || $2) . ".$3"/ie;     
    return $dt;
}

print blabla('12 сентября 1997');



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
Suppir
Дата 16.7.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



sir_nuf_nuf,  то что нужно, спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




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


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

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