/ /文字列内のスペースを削除/置換する - ruby​​、regex

ストリップ/文字列内のスペースを置き換える - ルビー、正規表現

与えられた文字列 "5 900 000"

私は使用してスペースを取り除きたい gsub 次のパターンで

gsub(/s/, "")

しかし、それはうまくいかないようです。

gsub(" ", "")

回答:

回答№1の場合は25

あなたが代わりに置き換えをしたいならば、あなたは使う必要があります:

str.gsub!(/s/,"")

あるいは、gsubは置換文字列を文字列で返します。

str2 = str.gsub(/s/,"")

EDIT:あなたの答えによると、スペースではなく文字列に印刷不可能な文字が埋め込まれているようです。を使う / D / 検索文字列はあなたが望むものかもしれません。以下は、数字以外の文字に一致し、それを空の文字列に置き換えます。

str.gsub!(/D/,"")

回答№2のための7
>> "5 900 00".gsub(" ","")
=> "590000"

それは本当に文字列ですか?

変数tryを変更したい場合、.gsubは値を返しますtry .gsub!( ""、 "")


回答№3の4

ただキックのために:あなたはここでも正規表現が必要ですか? String#tr トリックをうまくやるべきです:

telemachus ~ $ irb
>> "500 500 12".tr(" ", "")
=> "50050012"
>> "500 500 12".tr!(" ", "")
=> "50050012"

〜と同様に gsub そして gsub!! methodは、変更された結果を返すのではなく、変更を適切な場所に行います。私はあなたがここで欲しいのか分からない。

このような場合、 tr 私にはもっと簡単に思えます。最適化を探しているのではありませんが、多くの文字列メソッドがあることを忘れないでください。 その他 正規表現よりも。


答え№4の2

することをお勧めします str.gsub!(/s+/, "") 効率上の理由から。


回答№5の2

これが役に立つことを願ってみてください。

2.2.1 :001> str= "  Jai   Kumar rajput ";
# "  Jai   Kumar rajput "
2.2.1 :001> str.squish.downcase.tr(" ","");
# "JaiKumarRajput"

答え№6の場合は1

"5 900 000".gsub(/s/,"") 正常に動作します

私が見たものからあなたはgsubを書いた ドット それがなければならない(foo、bar) string.gsub(foo、bar)


回答№7は0
print "5 900 000".gsub(/s/, "")

私のために働く。

あなたは変数に結果に影響を与えていますか?


回答№8の場合は0

どういう意味ですか

str.gsub!.(/s/,"")

感嘆符付き?


回答№9の場合は0

おもしろいことに、私が文字列を印刷すると私が得ることです。

697302240000

しかし、データベースに到達するのは697 000です。 私は私が与えたパターンがあなたの提案と同様に働くべきであることを知っています、しかしこれは少し「馬鹿げた」事件のようです:-)