内插变量的字符串连接

时间:2015-05-16 18:37:48

标签: ruby string

以下代码长于推荐的80个字符。

我试图将其拆分并用+运算符和<<运算符连接,但它似乎不起作用。我已经尝试了.to_s方法并将冒号移动到他们自己的字符串中但无济于事。

将此分解为2行或3行而不会出现no method "+@":String错误的正确方法是什么?

string = "#{sprintf("%02i", hours)}:#{sprintf("%02i", minutes)}:#{sprintf("%02i", seconds)}"

3 个答案:

答案 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" )。