0

私のテーブルには、文字列型の Attachment.attachment_content_type があります。値は次のようになります。

[]
[image/png]
[application/msword, application/word, application/x-msword, application/x-word, text/plain]

私がやりたいのは、もしあれば最初のアイテムを取得することです。

私は試しています:

attachment.attachment_content_type[0]

しかし、それは [ を返すだけで、「application/msword」ではありません

分割を使用する必要がありますか、またはこれが配列であることをレールに伝えるためのレール上のルビーを使用するより良い方法はありますか? ありがとう

4

3 に答える 3

3
$ cat foo.rb 

strings = [
  "[]",
  "[image/png]",
  "[application/msword, application/word, application/x-msword, application/x-word, text/plain]"
]

strings.each do |string|
  array = string[1...-1].split(/[\s,]+/)
  puts array[0]
end

$ ruby foo.rb 

image/png
application/msword
于 2012-12-05T21:21:17.300 に答える
1

attachment.attachment_content_type[1..-2].split(',').map(&:strip)文字列の内容を配列として返します。

于 2012-12-05T21:27:21.643 に答える
0

gsub!と を使用してみてくださいscan

mimetypes.gsub!(/([\[\]])/, '')
mime_array = mimetypes.scan(/, /)

より興味深いメソッドについてはString APIを参照し、正規表現テストについてはRubularを参照してください:)

于 2012-12-05T21:36:35.640 に答える