За последние 24 часа нас посетили 17852 программиста и 1647 роботов. Сейчас ищет 931 программист ...

Помогите с простейшим приведением формата времени :)

Тема в разделе "Регулярные выражения", создана пользователем Ptr73, 5 фев 2010.

  1. Ptr73

    Ptr73 Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    2
    Симпатии:
    0
    Приветствую!
    В регулярных выражениях я полный нуб, так что прошу элементарной помощи.
    Нужно распарсить строку с временами и привести ее к формату "чч:мм:сс"
    Строка наподобие такой:
    1:10:50 1:28 13:41 14:23:10 2:12 1:44
    нужно получить список значений
    01:10:50; 00:01:28; 00:13:41; 14:23:10;
    любыми методами, но предпочтительно если стандартными методами регулярных выражений и замены по шаблону,
    т.к. делаю я это не на php, а на VBA через regexp и regexp.replace :)

    Заранее благодарен!
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Я б не заморачивался на регулярки, написал/нашел пару функций.
    1) типа explode - разбивает строку по разделителю и возвращает массив
    2) добавление строки до нужной длины нужным символом.
     
  3. Ptr73

    Ptr73 Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    2
    Симпатии:
    0
    Сделал, хотя и не настолько красиво, насколько рассчитывал.
    К сожалению, без цикла не обошлось.

    Код (Text):
    1.  
    2. timestr = "1:10:50 1:28 13:41 14:23:10 2:12 1:44"
    3. regex.Pattern = "(?:(\d)?(\d):)?(\d)?(\d):(\d+)"
    4.  
    5. Set matches = regex.Execute(timestr)
    6.  
    7. For i = 0 To matches.Count - 1
    8.  
    9.         timeline = timeline + CStr(Int(matches(i).SubMatches(0))) + CStr(Int(matches(i).SubMatches(1))) + ":" + CStr(Int(matches(i).SubMatches(2))) + CStr(Int(matches(i).SubMatches(3))) + ":" + CStr(Int(matches(i).SubMatches(4))) + "; "
    10.  
    11. Next i