2011-01-07 6 views
0

문자열을 가져 와서 숫자 만 구문 분석하고이 문자열을 표준 출력에 인쇄하려고합니다. 명령 줄에서 ruby -e 스위치를 사용하여 한 줄로 완료해야합니다. do shell script 명령을 사용하여이 코드를 applescript의 일부로 사용하기 때문에 한 줄이어야합니다."-e"스위치를 사용하는 Ruby 명령 줄, stdout에 문제가있는 인쇄

여기에 내가 생각 해낸 코드는 다음과 같습니다

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

나는 인쇄가 각 숫자에 대한 호출되고 실현. 금요일이고 내 두뇌가 튀었 어. :-) 누구든지 어떤 제안이 있습니까?

감사합니다.

답변

4

당신은 단지 gsub을 사용할 수

$ ruby -e 'print %{303-123-4567}.gsub(/[^\d]/, "")' 
3031234567 
+0

이 완벽합니다. 고맙습니다! –

0

거기에 .map이 필요합니까?

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

원하는대로 처리됩니다.

(면책 조항 : 나는 그래서 여기에 요점을 놓친 루비 프로그래머가 아니에요!)

1

당신은 to_a 방법으로 블록을 보내고, 한 블록으로는 아무 것도하지 않습니다. 당신은 easly 할 수 있습니다 : 당신은 너무 scan을 사용할 수 있습니다

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

:

%{303-123-4567}.scan(/\d/) {|num| print num} 
관련 문제