2013-07-27 11 views
6

、次のタスクのための正規表現で私を助けてください:私はいくつかのテーブルの「コスト」列を持っていますが、値が異なってあります数字、 "、"、 "。"以外の文字列からすべての文字を削除する方法Rubyを使って?

['1.22','1,22','$1.22','1,22$','$ 1.22'] 

は、私がdigits,とを除くすべての文字を削除する必要があります.。ですから、常にFloatとして解析できる値を取得する必要があります。

+0

あなたは何を試してみましたか?あなたの質問をする前に、いくつかのドキュメントやグーグルを読むことをお勧めします。 – stevekohls

+2

'1,22'は何を解釈しますか? – bsd

+0

コードとして書いたものはすべて無効です。それは文字列の配列ですか? – sawa

答えて

0

あなたはすべての空白を置き換えることができ、すべての'$'''

+2

ルビーでどうやってやるの? – likeitlikeit

1

番号を抽出するには、次の

a = ["1.22", "1,22", "$1.22", "1,22$", "$ 1.22"] 
a.map {|s| s[/[\d.,]+/] } 
#=> ["1.22", "1,22", "1.22", "1,22", "1.22"] 

,.'1,22'のように - >1.22)小数点のように扱われるべきでカンマを仮定し、これをフローティングに自分の価値観を変える必要があります。

a = ["1.22", "1,22", "$1.22", "1,22$", "$ 1.22"] 
a.map {|s| s[/[\d.,]+/].gsub(',','.').to_f } 
#=> [1.22, 1.22, 1.22, 1.22, 1.22] 
8

試用:

yourStr.gsub(/[^0-9,.]/, "") 
+0

これはとても役に立ちました!コードに改行を入れる方法はありますか? – oliviasteger

+1

@InspectorElement文字のリストに '\ r'と' \ n'を追加すると、それらは削除されません。 – ProgramFOX

10
a.map {|i| i.gsub(/[^\d,\.]/, '')} 
# => ["1.22", "1,22", "1.22", "1,22", "1.22"] 
0

もう1:

a= ['1.22','1,22','$1.22','1,22$','$ 1.22'] 
a.map{|i| i[/\d+.\d+/]} 
# => ["1.22", "1,22", "1.22", "1,22", "1.22"] 
関連する問題