拆分红宝石中的第二个逗号

时间:2016-06-28 06:54:14

标签: ruby-on-rails arrays ruby split ruby-on-rails-5

为“不那么大的问题”道歉。当你的眼睛闭上但你的大脑一直在思考代码时会发生这种情况。

这一点困惑我。我想在逗号上分割一个字符串,使其成为一个数组,或者...,如果我可以向我的控制器发送数组然后完美但我做的任何东西似乎都没有工作,所以可能工作的是分裂第二个逗号在一个字符串中。

我有一个状态数组,如下所示: enter image description here

因此,当我使用params[:file].split(",")时,data:image/jpeg;base64会出现句柄错误,因为当代码本身正确时,它会在第一个逗号上分割。一个愚蠢的问题,你可以拆分红宝石中的第二个逗号吗?

数组如:["data:image/jpeg;base64,/9j/xxxxxx,data:image/jpeg;base64,/9j/xxxxxx"]

我的输入看起来像这样,我在file[]file[][]

尝试了很多变体
<input type="hidden" name="file" value={this.state.files} />

我使用concat来获取数组。

4 个答案:

答案 0 :(得分:3)

您还可以在发送到Rails之前以不同的方式序列化文件数组。

发送文件的代码是什么样的?

如果有的话,你可以像这样加入一些独特的分隔符吗?

makeRequest({ file: this.state.files.join('---') });

然后在Ruby

中拆分
params[:file].split('---')

答案 1 :(得分:1)

params[:files].split(",").each_slice(2).map { |top| "#{top.first},#{top.last}"}

基本上你可以正常分割“,”然后将每两个元素合并在一起:)

str = '["data:image/jpeg;base64,/9j/xxxxxx,data:image/jpeg;base64,/9j/xxxxxx"]'
str.split(",").each_slice(2).map{ |top| "#{top.first},#{top.last}"}
 => ["[\"data:image/jpeg;base64,/9j/xxxxxx", "data:image/jpeg;base64,/9j/xxxxxx\"]"]

答案 2 :(得分:0)

result = []
incoming_data.gsub(/"data:\S+"/) {|member| result << member}
也许这样......

答案 3 :(得分:0)

str = "Now is the time for citizens, every last one, to revolt, without delay."

i1 = str.index(',') 
i2 = i1 + 1 + str[i1+1..-1].index(',')
[str[0..i2-1], str[i2+1..-1]]
  # => ["Now is the time for citizens, every last one",
  #     "to revolt, without delay."]