在 ruby 中的第二个逗号处拆分

Split on second comma in ruby

为 "not so great questions" 道歉。当您闭上眼睛但您的大脑一直在思考代码时,就会发生这种情况。

这一点让我很困惑。我想用逗号拆分一个字符串以使其成为一个数组,或者......在一个字符串中。

我有一个如下所示的状态数组:

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

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

我的输入看起来像这样,我尝试了 file[]file[][]

的多种变体
<input type="hidden" name="file" value={this.state.files} />

我已经使用 concat 获取数组。

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\"]"]

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

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

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

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

然后与 Ruby

中的拆分
params[:file].split('---')
result = []
incoming_data.gsub(/"data:\S+"/) {|member| result << member}

也许这样...

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."]