在Ruby中将整数转换为带符号的字符串

Tom*_*man 5 ruby integer

我有一份报告,其中列出了总值,然后是括号中的变化.例如:

歌曲:45(上周+10)

所以我想将整数10打印为"+10",将-10打印为"-10"

现在我正在做

(song_change >= 0 ? '+' : '') + song_change.to_s
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

Way*_*rad 26

"%+d" % song_change
Run Code Online (Sandbox Code Playgroud)

String#%根据字符串中的打印说明符格式化右侧.打印说明符"%d"表示十进制aka.整数,并且添加到打印说明符的"+"强制始终打印相应的符号.

您可以在Kernel #sprintfsprinf手册页中找到有关打印说明符的更多信息.

您可以通过传入数组一次格式化多个事物:

song_count = 45
song_change = 10
puts "Songs: %d (%+d from last week)" % [song_count, song_change]
# => Songs: 45 (+10 from last week)
Run Code Online (Sandbox Code Playgroud)