Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения (правила?), где что хранится? 
:(
    Опции темы
Camel
Дата 29.1.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Надо написать программулинку для сдвига времени показа субтитров на экране. Имеется файл с расширением sub состоящий из строк формата:
Код

{272}{319}Some text. |Next line

Числа в фигурных скобках, как я понимаю, время начала и конца показа текста на экране. Как я понимаю каждую строку надо обработать примерно таким образом:
Код

line = "{273}{319}Subtitle"                                #Для примера
line.gsub(/\d+/, ('переменная'.to_i + 200).to_s)

Вопрос, в какой переменной хранится та часть строки line которая удовлетворяет регулярному выражению? Вообще, в какую-нибудь переменную передаётся то-что-мы-будем-заменять?
PM MAIL   Вверх
V.A.KeRneL
Дата 29.1.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

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



Camel, может я давно не работал с регэкспами, что-то сейчас ничего лучше придумать не могу: 
Код

line = "{272}{319}Subtitle"
line.gsub(/\{(\d+)\}\{(\d+)\}/, 
          "{" + ($1.to_i + 200).to_s + "}{" + ($2.to_i + 200).to_s + "}")  
    #=> "{472}{519}Subtitle"



Это сообщение отредактировал(а) V.A.KeRneL - 29.1.2007, 22:27


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
valodzka
Дата 29.1.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

gsub(/\d+/) {|v| v.to_i + 200 }


Правда если текст содержит цифры регэксп придётся доработать

Это сообщение отредактировал(а) valodzka - 29.1.2007, 15:40
PM   Вверх
Camel
Дата 29.1.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



V.A.KeRneL,  почему используется именно метод gsub, а не sub? Как я понимаю если в субтитре встретится текст типа {01}{345}, то он тоже заменится на {201}{545} как и метки времени. Может быть это тот случай когда надо использовать sub? Тогда замены будут сделаны только в метках времени. Верно?

Добавлено @ 16:14 
V.A.KeRneL, твой код выдаёт
"{200}{200}Subtitle"
Видимо переменные $1 и $2 пусты. Это и привело меня на форум :-)
Сейчас попробую код от valodzka.

Добавлено @ 16:16 
Поздее: работает. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

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

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


 




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


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

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