以下代码长于推荐的80个字符。
我试图将其拆分并用+运算符和<<
运算符连接,但它似乎不起作用。我已经尝试了.to_s
方法并将冒号移动到他们自己的字符串中但无济于事。
将此分解为2行或3行而不会出现no method "+@":String
错误的正确方法是什么?
string = "#{sprintf("%02i", hours)}:#{sprintf("%02i", minutes)}:#{sprintf("%02i", seconds)}"
答案 0 :(得分:5)
您可以将三个sprintf
合并为一个:
string = sprintf("%02i:%02i:%02i", hours, minutes, seconds)
答案 1 :(得分:1)
要在Ruby中将字符串拆分为多行,请使用反斜杠:
string = "#{sprintf("%02i", hours)}: \
#{sprintf("%02i", minutes)}: \
#{sprintf("%02i", seconds)}"
注意如何只有一个开口和一个关闭"
。
您还可以考虑将三个sprintf
方法调用一个。
答案 2 :(得分:0)
我猜你真正的问题是,给定秒数或时间对象,你想构建一个具有所需格式的字符串。
如果您获得func image(image: UIImage, didFinishSavingWithError error: NSError, contextInfo:UnsafePointer<Void>) { }
:
seconds
如果您获得了def fmt(seconds)
hours, minutes = seconds.divmod(60)
"%02d, %02d, %02d" % [hours, *minutes.divmod(60)]
end
fmt(223)
#=> "03, 00, 43"
个对象:
Time
在第二种情况下,我添加了&#34;小时&#34;,&#34;分钟&#34;和&#34;秒&#34;只是为了说明如何修改格式字符串。
如果您想在多行上打印,只需在相应的格式字符串中插入换行符(require 'time'
def fmt(time)
time.strftime('%H hours, %M minutes, %S seconds')
end
time = Time.now
#=> 2015-05-16 14:38:02 -0700
fmt(time)
#=> "14 hours, 38 minutes, 02 seconds"
)。