2016-06-28 70 views
0

「不太好的問題」的道歉。當你的眼睛閉上,但你的大腦不斷思考代碼時,會發生這種情況。紅寶石中的第二個逗號分割

這有點困惑我。我想用逗號分割一個字符串,使它成爲一個數組,或者,如果我可以發送給我的控制器數組,然後完美,但是我從來沒有看到過任何工作,所以可能的工作是分割第二個逗號在一個字符串中。

我有一個狀態數組,看起來像這樣: 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得到陣列。

+0

好了,看着這個,你真正想要的是每個子在以「data:」開頭的字符串中是?這有助於你找到另一種解決方案嗎? –

+0

是的。不,我沒有找到其他解決方案。我全力以赴,對不起。 – Sylar

+0

如何使用rgex來匹配「data:。*」的所有實例? http://stackoverflow.com/questions/27881549/ruby-regex-to-match-multiple-occurrences-of-pattern –

回答

3

你也可以發送到Rails的前序列以不同的方式對文件陣列。

發送文件的代碼是什麼樣的?

如果有什麼問題,你可以像這樣加入它,用一些獨特的分隔符?

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

,然後與一分爲紅寶石

params[:file].split('---') 
+0

那麼,在反應:'var files = this.state.files.join('---');'那麼輸入值將是'files'。作品。謝謝。 – Sylar

+0

不客氣。一般情況下,如果你有*將序列化爲字符串,最好選擇一個你認爲不會自然發生的分隔符。也許更好的方法是發送你的參數爲JSON,如果它是一個POST請求,那麼你會得到免費的數組解析。 –

+0

這是後,但我幾乎放棄了,因爲它沒有按預期工作。但是你的代碼保存了一天。 – Sylar

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\"]"] 
0
result = [] 
incoming_data.gsub(/"data:\S+"/) {|member| result << member} 

也許這種方式...

+1

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/12833543) –

+0

我應該刪除我的答案嗎? – nobilik

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