2014-05-13 44 views
1

我需要將格式'h:m:s'的時間戳轉換爲'0h:0m:0s'。即如果小時或分鐘或秒中的任何一個是單個數字,則添加前導零。將h:m:s轉換爲0h:0m:0s(如果單個數字加零)

例 -

1:6應轉換爲01:06

1:5:6應轉換爲1點05分06秒

05:6應轉換爲05 :06

我試過了嗎?

$this_video_duration =~ s/(^|:)(\d(:|$))/0$2/g; 

請幫我這個正則表達式。

回答

1

你的問題是,在第一場比賽結束:被「吃」開始的下一場比賽的:

你可以使用零寬度字邊界:

$this_video_duration =~ s/\b\d\b/0$&/g; 

\b\w\W\W\w之間的匹配,並\d\wDemo here

+0

這是一個很棒的..偉大的工作! – virus

3
$this_video_duration =~ s/(\d+)/ length($1) >1 ? $1 : "0$1" /ge; 
+1

偉大的..我不知道如果我能秒鐘內使用表達式///; – virus

+0

@virus你可以通過使用'/ e'修飾符 –

+0

是的..我可以回憶一下:) – virus

2
$x = join ':', map { sprintf '%02d', $_ } split /:/, $x; 

$x =~ s/\d+/ sprintf '%02d', $_ /eg;