2009-10-08 5 views
16

たとえば、「ds.35bdg56」と入力した場合、関数は35を返します。そのようなもののためにあらかじめ作成された関数があるか、文字列を繰り返し処理し、最初の数値を見つけ、それを返しますか?(Ruby)文字列内の最初の数字を簡単に見つける機能はありますか?

あなたは本当にこれでいくつかの楽しみを持っている可能性が
+1

何べきds.-35bdg56 'に解決しますか?または、それはちょうど起こることはできません... – DigitalRoss

+0

は35に解決する必要があります(否定なし) – sepiroth

+1

整数だけ、または小数点をサポートする必要があります(つまり "ab3.5cd"は3または3.5を返します) –

答えて

21
>> 'ds.35bdg56'[/\d+/] 
=> "35" 

それとも、あなたが機能を求めてなかったので...

$ irb 
>> def f x; x[/\d+/] end 
=> nil 
>> f 'ds.35bdg56' 
=> "35" 

>> class String; def firstNumber; self[/\d+/]; end; end 
=> nil 
>> 'ds.35bdg56'.firstNumber 
=> "35" 
+0

これは機能しますが、より多くの人間のタイピングとコンピュータ処理が必要以上に必要となる。あなたがしたくないものをすべて置き換えるよりも、あなたが望むものを抜き出す方がずっと簡単です! –

+0

[OK]を更新しました。良い提案。 – DigitalRoss

4
text = "ds.35bdg56" 
x = /\d+/.match(text) 
puts x #will return 35 (i hope this helps) 
+0

他のソリューションよりもクリーナーです。あなたが整数としてそれを望むなら、 '/ \ d + /。match(text)[0] .to_i'が必要です。 –

+0

または文字列が必要な場合は、 '.to_s'を追加してください。つまり、* MatchData *オブジェクトを返します。 – DigitalRoss

+0

xは整数値が必要な場合は '' 35 "'となります。 'x.to_i'を試してください – rampion

3
text[/\d+/].to_i 
関連する問題