繁体   English   中英

Ruby命令行使用“ -e”开关,将问题打印到标准输出

[英]Ruby command line using “-e” switch, problem printing to stdout

我想要一个字符串,仅解析数字,然后将该数字字符串打印到stdout。 必须使用命令行上的ruby -e开关用一行完成。 它必须是一行,因为我将它用作do shell script命令的applescript的一部分。

这是我想出的代码:

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

我意识到每个数字都需要打印。 今天是星期五,我的大脑炸了。 :-) 有没有人有什么建议?

谢谢!

您可以只使用gsub

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

您正在将块发送到to_a方法,该方法对块没有任何作用。 您可以轻松做到:

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

您也可以使用scan

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

您是否只需要一个.map?

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

似乎可以做您想要的。

(免责声明:我不是Ruby程序员,所以这里可能遗漏了重点!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM