字符串具有重复的值-我想按相同顺序提取值
str = %q(
a
a
b
a
)
a = str.split
new_value = a[0]
flip_flop = ""
s1, s2 = "", ""
a.each{|e|
if e == flip_flop
s1 << e
flip_flop = e
else
s2 << e
flip_flop = e
end
}
p s1 # should be aaa
p s2 # should be b
期望值:s1应该为“ aaa”,而s2应该为“ b”。 更现实的例子: 字符串=“ xblah \ nxmoreblah \ nyfoo \ nzbar \ nxmoredata \ nxblah”。 预期:“ xblahmoreblah \ nyfoo \ nzbar \ nxmoredatablah”。
String =“ ablah \ namoreblah \ nbfoo \ nablahend” 预期=“ ablahmoreblah \ nfoo \ nablahend”
答案 0 :(得分:1)
我认为您的原始示例(a,a,b,a)
=> (a,a,a),(b)
并不关心序列,在这种情况下,您可以使用
str.split.group_by(&:itself).values.map(&:join)
=> ["aaa", "b"]
如果您确实关心序列,如您的下一个示例所建议的那样,并且您期望它实际返回(a,a),(b),(a)
,那么
str.split.chunk{ |n| n }.map {|a| a.last.join}
=> ["aa", "b", "a"]
答案 1 :(得分:1)