Командная строка Ruby с использованием ключа "-e", проблема с печатью в стандартный вывод - PullRequest
0 голосов
/ 08 января 2011

Я хочу взять строку символов, разобрать только цифры, а затем распечатать эту строку чисел на стандартный вывод.Это нужно сделать одной строкой, используя переключатель ruby -e в командной строке.Это должна быть одна строка, потому что я использую это как часть appleScript с командой do shell script.

Вот код, который я придумал:

ruby -e '%{303-123-4567}.to_s.chars.to_a {|char| print char if char =~ /\d/}'

Я понимаю, что печать вызывается для каждой цифры.Сегодня пятница, и мой мозг жарен.:-) У кого-нибудь есть предложения?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 08 января 2011

Вы можете просто использовать gsub:

$ ruby -e 'print %{303-123-4567}.gsub(/[^\d]/, "")'
3031234567
1 голос
/ 08 января 2011

Вы отправляете блок методу to_a, который ничего не делает с блоком.Вы можете легко сделать:

%{303-123-4567}.each_char {|ch| print ch if ch =~ /\d/}

Вы также можете использовать scan:

%{303-123-4567}.scan(/\d/) {|num| print num}
0 голосов
/ 08 января 2011

Вам просто нужен .map там?

ruby -e '%{303-123-4567}.to_s.chars.to_a.map {|char| print char if char =~ /\d/}'

Кажется, делать то, что вы хотите.

(Отказ от ответственности: я не программист на Ruby, поэтому, возможно, здесь упустил смысл!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...