この形式に従う入力から:
rgb(49, 49, 50) or rgb(30,30,40)
次のように、コンマで区切られた数字だけを含む文字列を取得するにはどうすればよいですか。
49,49,50
ルビーで?カンマの直後にスペースが入る場合があるのが気になります。どうすれば対処できますか?
スキャンはあなたの友達です:
"rgb(12,23,34)".scan(/\d+/).join(',') # => "12,23,34"
素敵で甘い。
このように (内部のすべての空白を無視しますrgb()
:
if "rgb(49, 49, 50)" =~ /rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/
[$1, $2, $3].join ","
end
#=> "49,49,50"
R
でG
あり、一致グループ 1 ~ 3 に含まれ、 、、または返される結果B
からアクセスできます。Rubular で試してみてください。$1
$2
$3
更新:このソリューションとここで使用するソリューションの違いは、これscan
は入力を検証し、入力が正しくない場合は一致しないことです。おそらく、scan
ソリューションよりも入力が少し遅く、長くなります。したがってscan
、入力が有効であることがアプリオリにわかっている場合は、ソリューションがより適切な選択になります。
多様性のために、不要な文字を削除します。
"rgb(49, 49 , 50)".gsub(/[rgb() ]/, '')
=> "49,49,50"