在Ruby中,您可以使用该String#%方法将参数替换为C样式的格式字符串,如下所示:
'%.3d can be expressed in binary as %b' % [30, 30]
#=> "030 can be expressed in binary as 11110"
Run Code Online (Sandbox Code Playgroud)
Kernel#sprintf和Kernel#format行为相似:
sprintf('%.3d can be expressed in binary as %b', 30, 30)
#=> "030 can be expressed in binary as 11110"
format('%.3d can be expressed in binary as %b', 30, 30)
#=> "030 can be expressed in binary as 11110"
Run Code Online (Sandbox Code Playgroud)
Ruby还提供了在此格式字符串中使用命名参数的功能:
'Hello, %{first_name} %{last_name}!' % {first_name: 'John', last_name: 'Doe'}
#=> "Hello, John Doe!"
Run Code Online (Sandbox Code Playgroud)
但有没有办法一起使用这些功能?例如:
'%{num}.3d can be expressed in binary as %{num}b' % {num: 30}
# I want: "030 can be expressed in binary as 11110"
# Actual: "30.3d can be expressed in binary as 30b"
Run Code Online (Sandbox Code Playgroud)
换句话说,有没有办法在带有命名参数的格式字符串中使用标志,宽度说明符,精度说明符和类型?%[flags][width][.precision]type如果我想给格式序列命名,那么形式是什么?
Uri*_*ssi 15
试试这个:
'%<num>.3d can be expressed in binary as %<num>b' % {num: 30}
# => "030 can be expressed in binary as 11110"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3118 次 |
| 最近记录: |