Как получить странный текст в строке в Ruby - PullRequest
2 голосов
/ 26 августа 2010

У меня есть строка, и я хочу получить из нее еще одну строку, в которой только символы находятся в нечетных местах.

Например, если у меня есть строка с именем ABCDEFGH, я ожидаю вывод ACEG, посколькуСимвольные индексы находятся на 0,2,4,6 соответственно.Я сделал это с помощью цикла, но в Ruby должна быть однострочная реализация (возможно, с использованием Regex?).

Ответы [ 5 ]

3 голосов
/ 26 августа 2010
>> "ABCDEFGH".gsub /(.)./,'\1'
=> "ACEG"
2 голосов
/ 26 августа 2010

Некоторые другие способы:

Использование Перечислимые методы

"BLAHBLAHBLAH".each_char.each_slice(2).map(&:first).join

Использование регулярных выражений :

"BLAHBLAHBLAH".scan(/(.).?/).join
2 голосов
/ 26 августа 2010

Вот однострочное решение:

"BLAHBLAH".split('').enum_for(:each_with_index).find_all { |c, i| i % 2 == 0 }.collect(&:first).join

Или:

''.tap do |res|
  'BLAHBLAH'.split('').each_with_index do |char, index|
    res << c if i % 2 == 0
  end
end

Еще один вариант:

"BLAHBLAH".split('').enum_slice(2).collect(&:first).join
1 голос
/ 26 августа 2010
(0..string.length).each_with_index { |x,i| puts string[x] if i%2 != 0 }
1 голос
/ 26 августа 2010

Не уверен насчет скорости выполнения, но это одна строка обработки.

res =  ""; 
"BLAHBLAH".scan(/(.)(.)/) {|a,b| res += a}
res # "BABA"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...