Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
8
Task/Multisplit/Ruby/multisplit-1.rb
Normal file
8
Task/Multisplit/Ruby/multisplit-1.rb
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
text = 'a!===b=!=c'
|
||||
separators = ['==', '!=', '=']
|
||||
|
||||
def multisplit_simple(text, separators)
|
||||
text.split(Regexp.union(separators))
|
||||
end
|
||||
|
||||
p multisplit_simple(text, separators) # => ["a", "", "b", "", "c"]
|
||||
18
Task/Multisplit/Ruby/multisplit-2.rb
Normal file
18
Task/Multisplit/Ruby/multisplit-2.rb
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
def multisplit(text, separators)
|
||||
sep_regex = Regexp.union(separators)
|
||||
separator_info = []
|
||||
pieces = []
|
||||
i = prev = 0
|
||||
while i = text.index(sep_regex, i)
|
||||
separator = Regexp.last_match(0)
|
||||
pieces << text[prev .. i-1]
|
||||
separator_info << [separator, i]
|
||||
i = i + separator.length
|
||||
prev = i
|
||||
end
|
||||
pieces << text[prev .. -1]
|
||||
[pieces, separator_info]
|
||||
end
|
||||
|
||||
p multisplit(text, separators)
|
||||
# => [["a", "", "b", "", "c"], [["!=", 1], ["==", 3], ["=", 6], ["!=", 7]]]
|
||||
7
Task/Multisplit/Ruby/multisplit-3.rb
Normal file
7
Task/Multisplit/Ruby/multisplit-3.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
def multisplit_rejoin(info)
|
||||
str = info[0].zip(info[1])[0..-2].inject("") {|str, (piece, (sep, idx))| str << piece << sep}
|
||||
str << info[0].last
|
||||
end
|
||||
|
||||
p multisplit_rejoin(multisplit(text, separators)) == text
|
||||
# => true
|
||||
Loading…
Add table
Add a link
Reference in a new issue