我需要拆分在紅寶石一個字符串,它具有以下格式:如何(容易)分割字符串中紅寶石長度和也定界符
[{a:1,b:2,c:3,d:4},{a:5,b:6,c:7,d:8},{a:9,b:10,c:11,d:12},{a:13,b:14,c:15,d:16}]
即它是一個生成的JavaScript數組。不幸的是,這個列表很長,我想在達到一個特定的長度後用數組元素分隔符逗號分割它,這個長度適合用代碼編輯器編輯它,但是要保持元素的完整性。例如,上面的15分割寬度的線將成爲:
[{a:1,b:2,c:3,d:4},
{a:5,b:6,c:7,d:8},
{a:9,b:10,c:11,d:12},
{a:13,b:14,c:15,d:16}]
和具有32的寬度文本將是:
[{a:1,b:2,c:3,d:4},{a:5,b:6,c:7,d:8},
{a:9,b:10,c:11,d:12},{a:13,b:14,c:15,d:16}]
除了經典的「蠻力」方法(循環,檢查}
和{
之間的分隔符,同時增加長度,如果長度大於且發現有效分隔符,則進行拆分)是否有更多「Rubyish」解決方案?
編輯:幼稚的做法連接,絕對不會Rubyiish,因爲我沒有一個非常強的紅寶石背景:
def split(what, length)
result = []
clength = 0
flag = FALSE
what_copy = what.to_s
what_copy.to_s.each_char do |c|
clength += 1
if clength > length
flag = TRUE
end
if c == '}' and flag
result << what[0 .. clength]
what = what[clength+1 .. -1]
clength = 0
flag = FALSE
end
end
pp result
sres = result.join("\n")
sres
end
你寫的經典蠻力的方法呢? –
@EricDuminil是的,問題更新 – fritzone
我真的不明白這個問題在哪裏?您是否想要拆分{}中包含的數據,即。你會只有{a:1,b:2},顯然在額外的大括號中加入?其他方面,如果{}總是包含4個項目,爲什麼不用大括號將它們分組並返回1,2,3或4? – grail