私はこのような文字列を持っています:00:11:40または00:02:40どのようにして先頭のゼロとコロンを取り除くことができますか?それはこの 11時40分または2時40文字列の書式設定、先頭の文字の削除
答えて
、彼らが最初にしているので、私たちは、末尾のない、これらの「一流」の文字を呼び出しますが、このための正規表現は非常に簡単です。
x.sub(/^[0:]*/,"")
これはあなたがそれを表現したとおりに機能します:starti文字列の先頭に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
ありがとうございますが、私はこれを行う一般的な方法が必要です。文字列を秒単位で変換します。Time.at(秒.to_i).gmtime.strftime( '%R:%S') –
閉じる!私は、いくつかの正規表現で "gsub"を使用して先行ゼロとコロンを取り除く方法を理解する必要があります –
あなたはペテロが言ったようなものを使用することができますが、正確に次のようになります。
s = "00:11:40"
s = s[3..-1] # 11:40
別のアプローチは、splitメソッドを使用することです:私は1つは、より多くのことがわかりますが
s = "00:11:40".split(":")[1,2].join(":")
を混乱し複雑です。
正式なルックバックビハインド正規表現を試してみるとよいでしょう。 ニース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
エンド
これを行うには4つの異なる正規表現と15行のコードは必要ありません!単一の.sub(/^[0:] * /、 "")はうまくいきます! –
たとえば、ルビーの場合、「05」のような文字列があり、それを5にしたければ、単に「05」を実行するだけで、基本的な変換テクニックに単純に頼ることができます。
- 1. 削除文字列「foo」と先頭と
- 2. 文字列の先頭に数字以外の文字を削除します
- 3. SQLの文字列の先頭から文字を削除します
- 4. R:文字列の先頭から先頭のゼロを削除する
- 5. 文字列の先頭から非文字を削除する方法
- 6. 文字列の先頭と末尾にある文字を削除せずに、文字列から特定の文字を削除します。
- 7. 文字列[0]文字列の先頭文字を取得
- 8. 文字列の先頭の空白を削除します。
- 9. C#の接頭辞文字列の複数行の書式設定(接頭辞@)
- 10. 文字列の書式設定0.2〜2000
- 11. スカラ文字列の書式設定:エスケープシーケンス
- 12. Pythonの文字列書式設定エラー
- 13. PHP - 文字列の書式設定
- 14. リターン文字列の書式設定
- 15. Xamarin.Forms C#文字列の書式設定
- 16. 文字列の書式設定+ Blackberry + java
- 17. 文字列の書式設定| JavaScript | iMacros
- 18. 文字列 - 金額の書式設定
- 19. 文字列書式設定のPython
- 20. 文字列ブロックの書式設定チャレンジ
- 21. REGEXPヘルプ文字を削除するヘルプ||先頭の数字|| = sign
- 22. 各文字列の先頭文字を大文字にする
- 23. ファイル名の先頭から4文字と13文字の文字列を削除します
- 24. 数字の文字列の先頭にゼロを削除するVBA
- 25. 文字列の先頭の文字列を除外する正規表現
- 26. 日付書式設定文字列
- 27. 負のルックアヘッド - 文字列の先頭で
- 28. 文字列書式設定(文字番号)MATLAB
- 29. 先頭の文字を含むSQL書式
- 30. SQLの文字列の先頭に文字を挿入
私たちの中には正規表現の謙虚な学生しかいない人もいれば、ただのマスター(あなたは私のことを知っている人)です。それはあなたが2200時にTDDをしたときに起こることです。リファクタリングはエクササイズとして残されています。 – Gutzofter
'' 00:00:23 "'は結果が '' 23 "'になります。しかし、違反はない、これは依然としてOPが要求したものである。 –