[英]Ruby split binary string where the previous character is different from the next one
我想知道如何在Ruby中拆分二進制字符串。 我想在前一個字符與下一個字符不同的地方分割字符串。
例如,如果我有字符串
@s = "aaaabbabbaa"
我想創建一個字符串數組
@array[0] = "aaaa"
@array[1] = "bb"
@array[2] = "a"
@array[3] = "bb"
@array[4] = "aa"
我該怎么辦?
Enumerable#chunk可以做到這一點,但是它在Enumerable上定義-並且String不包含Enumerable。 將其轉換為一個字符數組(並將其粘貼回字符串),例如:
s = "aaaabbabbaa"
p array = s.chars.chunk(&:itself).map{|a| a.last.join} #=>["aaaa", "bb", "a", "bb", "aa"]
您可以對scan
使用正則表達式:
@array = @s.scan(/((.)\2*)/).map(&:first)
#=> ["aaaa", "bb", "a", "bb", "aa"]
str = "aaaabbabbaa"
r = /
(?<=(.)) # match any character in capture group 1, in positive lookbehind
(?!\1) # do not match capture group 1, negative lookahead
/x # free-spacing regex definition mode
str.split(r)
#=> ["aaaa", "a", "bb", "b", "a", "a", "bb", "b", "aa", "a"]
通過使用兩個環顧四周,在正則表達式上分割時不會丟失任何字符。
str = "aaaabbabbaa"
p str.chars.chunk_while(&:==).map(&:join)
輸出: ["aaaa", "bb", "a", "bb", "aa"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.