0

この形式に従う入力から:

rgb(49, 49, 50) or rgb(30,30,40)

次のように、コンマで区切られた数字だけを含む文字列を取得するにはどうすればよいですか。

49,49,50

ルビーで?カンマの直後にスペースが入る場合があるのが気になります。どうすれば対処できますか?

4

6 に答える 6

3

スキャンはあなたの友達です:

"rgb(12,23,34)".scan(/\d+/).join(',') # => "12,23,34"

素敵で甘い。

于 2013-10-24T22:32:20.600 に答える
1

このように (内部のすべての空白を無視しますrgb():

if "rgb(49, 49, 50)" =~ /rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/
    [$1, $2, $3].join ","
end
#=> "49,49,50"

RGあり、一致グループ 1 ~ 3 に含まれ、 、、または返される結果Bからアクセスできます。Rubular で試してみてください$1$2$3

更新:このソリューションとここで使用するソリューションの違いは、これscanは入力を検証し、入力が正しくない場合は一致しないことです。おそらく、scanソリューションよりも入力が少し遅く、長くなります。したがってscan、入力が有効であることがアプリオリにわかっている場合は、ソリューションがより適切な選択になります。

于 2013-10-24T22:12:03.777 に答える
0

多様性のために、不要な文字を削除します。

"rgb(49, 49 , 50)".gsub(/[rgb() ]/, '')
=> "49,49,50"
于 2013-10-24T22:44:47.057 に答える