2009-09-16 22 views

答えて

21

、彼らが最初にしているので、私たちは、末尾のない、これらの「一流」の文字を呼び出しますが、このための正規表現は非常に簡単です。

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

これはあなたがそれを表現したとおりに機能します:starti文字列の先頭に0を指定して、すべてを削除します。

+1

私たちの中には正規表現の謙虚な学生しかいない人もいれば、ただのマスター(あなたは私のことを知っている人)です。それはあなたが2200時にTDDをしたときに起こることです。リファクタリングはエクササイズとして残されています。 – Gutzofter

+1

'' 00:00:23 "'は結果が '' 23 "'になります。しかし、違反はない、これは依然としてOPが要求したものである。 –

0

EDITのように見えるので、: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

ありがとうございますが、私はこれを行う一般的な方法が必要です。文字列を秒単位で変換します。Time.at(秒.to_i).gmtime.strftime( '%R:%S') –

+0

閉じる!私は、いくつかの正規表現で "gsub"を使用して先行ゼロとコロンを取り除く方法を理解する必要があります –

2

あなたはペテロが言ったようなものを使用することができますが、正確に次のようになります。

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

別のアプローチは、splitメソッドを使用することです:私は1つは、より多くのことがわかりますが

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

を混乱し複雑です。

0

正式なルックバックビハインド正規表現を試してみるとよいでしょう。 ニースreference

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

これを行うには4つの異なる正規表現と15行のコードは必要ありません!単一の.sub(/^[0:] * /、 "")はうまくいきます! –

0

たとえば、ルビーの場合、「05」のような文字列があり、それを5にしたければ、単に「05」を実行するだけで、基本的な変換テクニックに単純に頼ることができます。

関連する問題