строковое форматирование, удалите ведущие символы

Реализация поставщиков LINQ главным образом сделана путем обработки деревьев выражений. Я также использую их для удаления литеральных строк из моего кода:

7
задан 16 September 2009 в 21:31
поделиться

4 ответа

Мы называем эти «ведущие» символы, а не замыкающие, так как они находятся в начале, но регулярное выражение для этого очень просто

x.sub(/^[0:]*/,"")

Это работает именно так, как вы это сформулировали: начиная с в начале строки удалите все 0 и: s.

22
ответ дан 6 December 2019 в 07:07
поделиться

РЕДАКТИРОВАТЬ: OP хотел этого с самого начала:

seconds = 11*60+40
Time.at(seconds.to_i).gmtime.strftime('%M:%S')  # gives '11:40'

или см. man strftime для получения дополнительных параметров форматирования.

EDIT: включая все обсуждения, вот рекомендуемый подход. Это также устраняет необходимость в вызове Time.

seconds = seconds.to_i
if seconds >= 60
  "#{seconds/60}:#{seconds%60}"
else
  "#{seconds}"
end
0
ответ дан 6 December 2019 в 07:07
поделиться

Тег noscript работает наоборот. Чтобы сделать содержимое видимым, когда скрипт включен, поместите его в скрытый элемент и покажите его с помощью скрипта: Хороший ссылка

it "should look-behind for zeros" do
time = remove_behind_zeroes("ta:da:na")
time.should be_nil

time = remove_behind_zeroes("22:43:20")
time.should == "22:43:20"

time = remove_behind_zeroes("00:12:30")
time.should == "12:30"

time = remove_behind_zeroes("00:11:40")
time.should == "11:40"

time = remove_behind_zeroes("00:02:40")
time.should == "2:40"

time = remove_behind_zeroes("00:00:26")
time.should == "26"

конец

def remove_behind_zeroes(value)
exp = /(?<=00:00:)\d\d/
match = exp.match(value)
if match then return match[0] end

exp = /(?<=00:0)\d:\d\d/
match = exp.match(value)
if match then return match[0] end

exp = /(?<=00:)\d\d:\d\d/
match = exp.match(value)
if match then return match[0] end

exp = /\d\d:\d\d:\d\d/
match = exp.match(value)
if match then return match[0] end
nil

конец

0
ответ дан 6 December 2019 в 07:07
поделиться

Вы можете использовать что-то вроде того, что сказал Питер, но правильно будет:

s = "00:11:40"
s = s[3..-1]   # 11:40

Другим подходом было бы использование метода разделения:

s = "00:11:40".split(":")[1,2].join(":")

Хотя я считаю этот метод более запутанным и сложным.

3
ответ дан 6 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: