2014-09-29 5 views
0

Есть ли способ извлечь строки, удаленные String#split в отдельный массив?Как разбить строку на два массива в Ruby

s = "This is a simple, uncomplicated sentence." 
a = s.split(/,|\./) #=> [ "This is a simple", "uncomplicated sentence" ] 
x = ... => should contain [ ",", "." ] 

Обратите внимание, что фактическое регулярное выражение, которое мне нужно использовать, намного сложнее, чем в этом примере.

+1

Ваше регулярное выражение не работает таким образом (неэкранированный точка). – Stefan

+0

Вы упомянули x в своем комментарии к коду, где находится X? – tomsoft

+0

x - это то, что я хочу рассчитать - мне нужен способ получить как a, так и x из s. – kfmfe04

ответ

1

Если вы хотите как совпавшие разделители и подстроки между ними, как в комментарии Стефана, то вы должны использовать split с захватами.

"This is a simple, uncomplicated sentence." 
.split(/([,.])/) 
# => ["This is a simple", ",", " uncomplicated sentence", "."] 

Если вы хотите, чтобы отделить их в разные массивы, а затем сделать:

a, x = 
"This is a simple, uncomplicated sentence." 
.split(/([,.])/).each_slice(2).to_a.transpose 
a # => ["This is a simple", " uncomplicated sentence"] 
x # => [",", "."] 

или

a = 
"This is a simple, uncomplicated sentence." 
.split(/([,.])/) 
a.select.with_index{|_, i| i.even?} 
# => ["This is a simple", " uncomplicated sentence"] 
a.select.with_index{|_, i| i.odd?} 
# => [",", "."] 
Смежные вопросы