title=sprintf եޥå

==== sprintf եޥå

Ruby  sprintf եޥåȤϴŪ C  [[man:sprintf(3)]]
ΤΤƱǤshort  long ʤɤ C ͭηФ뽤Ҥ
ʤȡ2ʿλؼ(%b)¸ߤ뤳ȡsprintf Τ٤Ƥ
ݡȤƤʤ(%': 3ڤ)ʤɤΰ㤤ޤ

Ruby ˤ礭˾¤ʤΤǡ%b, %o, %x
οͿ (¦̵¤1³ȤߤʤΤ)
..f Τ褦ɽ򤷤ޤͤդ
ǽϤ뤿ˤ %+x% x Τ褦˻ꤷޤ


ʲ sprintf եޥåȤν񼰤Ǥ[] ǰϤޤ줿ʬϾά
ǽǤ뤳Ȥ򼨤Ƥޤ

 %[$][ե饰][][.]ؼ

`%' ȤϤˤ `%%' Ȥޤ

ʲ줾Ǥ˴ؤޤ

==== ե饰

ե饰ˤ #, +, ' '(ڡ), -, 0 5बޤ

: #

 2ʡ8ʡ16ʤλؼ(b, o, x, X) ǤϤ줾ץեå
 Ȥ "0b", "0", "0x", "0X" ղäޤ
 C Ȥϰۤʤ 0 ξˤץեåղäޤ

//emlist{
  p sprintf("%#b", 10) #=> "0b1010"
  p sprintf("%#o", 10) #=> "012"
  p sprintf("%#x", 10) #=> "0xa"
  p sprintf("%#X", 10) #=> "0XA"
//}

 ư (f, e, E, g, G) ФƤɬϤ"."Ĥޤ

//emlist{
  p sprintf("%.0f", 10) #=> "10"
  p sprintf("%#.0f", 10) #=> "10."
  p sprintf("%.0e", 10) #=> "1e+01"
  p sprintf("%#.0e", 10) #=> "1.e+01"
//}

 ޤ g, G ǤϾ嵭˲ä;ʬ0Ĥޤ

//emlist{
  p sprintf("%.05g", 10) #=> "10"
  p sprintf("%#.05g", 10) #=> "10.000"
//}

: +

 ʸդˤޤäοǤ`+'ղäޤ
 ͤλؼ
 (d, i, b, o, x, X, u, f, e, E, g, G)
 ФƤ̣ޤ
 ޤä b, o, x, X, u ФƤϡФ "-"
 ղä뤳Ȥ򼨤ޤ

//emlist{
  p sprintf("%d", 1)   #=> "1"
  p sprintf("%+d", 1)  #=> "+1"

  p sprintf("%x", -1)  #=> "..f"  # ".." ̵¤ f ³ȤɽƤ
  p sprintf("%+x", -1) #=> "-1"
//}

: ' '(ڡ)

 `+' ƱǤ `+' ˶Ѥޤͤλؼ
 (d, i, b, o, x, X, u, f, e, E, g, G)
 ФƤ̣ޤ
//emlist{
  p sprintf("%d", 1)   #=> "1"
  p sprintf("%+d", 1)  #=> "+1"
  p sprintf("% d", 1)  #=> " 1"

  p sprintf("%x", -1)  #=> "..f"
  p sprintf("% x", 1)  #=> " 1"
  p sprintf("% x", -1) #=> "-1"
//}

: -

 Ϥ򺸵ͤˤޤλ꤬ʤ
 ̣ޤ

: 0

 Ϥͤξ;äʬ˶ "0" ͤޤ

 ͤλؼҤΰ(d, i, b, o, x, X, u, f, g, G)Ф
 Ƥ̣ޤ(e, E ˤϰ̣ʤ)
//emlist{
  p sprintf("%010d", 10)   #=> "0000000010"
//}
 `#' Ȱ˻ꤷνϤϰʲΤ褦ˤʤޤ
//emlist{
  p sprintf("%#010x", 10)  #=> "0x0000000a"
  p sprintf("%#010o", 10)  #=> "0000000012"
  p sprintf("%#010b", 10)  #=> "0b00001010"
//}

 ϡʲƱǤ

//emlist{
  p sprintf("%#10.8x", 10) #=> "0x0000000a"
  p sprintf("%#10.9o", 10) #=> "0000000012"
  p sprintf("%#10.8b", 10) #=> "0b00001010"
//}

 ̾ϡʲΤ褦ˤʤޤ

//emlist{
  p sprintf("%#10x", 10)   #=> "       0xa"
  p sprintf("%#10o", 10)   #=> "       012"
  p sprintf("%#10b", 10)   #=> "    0b1010"
//}

==== 

0ʳοǻϤޤˤʤޤʸĹ
ޤҤ٤ͤˤ餺ʬ
ʸޤ

λϥե饰Ϳ " ", "+",
"-", "0b", "0", "0x", "0X" Ĺθޤ

  p sprintf("%+5d", 11)  #=> "  +11"
  p sprintf("%+-5d", 11) #=> "+11  "
  p sprintf("%+05d", 11) #=> "+0011"

ϡֺɬפפλˤʤޤ̤ʸ󤬻ꤷĶ
λ̵ˤʤޤ

Ȥ `*' ꤹͤ뤳Ȥˤʤޤ

  p sprintf("%#05x", 10)    #=> "0x00a"
  p sprintf("%#0*x", 5, 10) #=> "0x00a"

==== 

"." θ³٤ɽޤ("." Τߤξ ".0" ƱǤ)٤
λؼ
(d, i, b, o, x, X, u)
ФƤϡʬḶ́ޤ

  p sprintf("%10.5d", 1)  #=> "     00001"
  p sprintf("%#10.5x", 1) #=> "   0x00001"
  p sprintf("%+10.5x", 1) #=> "    +00001"

ưλؼ
(f)
ФƤϾη̣ޤ

  p sprintf("%10.5f", 1)   #=> "   1.00000"
  p sprintf("%10.5f", 10)  #=> "  10.00000"

ưλؼ
(e, E, g, G)
ФƤ̣ͭޤ

  p sprintf("%10.5e", 1)   #=> "1.00000e+00"
  p sprintf("%10.5e", 10)  #=> "1.00000e+01"
  p sprintf("%10.5g",  10)  #=> "        10"
  p sprintf("%#10.5G", 10)  #=> "    10.000"

ʸλؼ(s, p)
ФƤϰʸΤꤷĶʬڤΤƤޤ
٤ƱͤˤСɤΤ褦ʰФƤ⤽
ĹνϤԤȤˤʤޤ

  p sprintf("%10.2s", "foo")  #=> "        fo"

  p sprintf("%5.5s", "foo")     #=> "  foo"
  p sprintf("%5.5s", "foobar")  #=> "fooba"

٤Ȥ `*' ꤹ٤ͤ뤳Ȥˤʤޤ

  p sprintf("%.5s", "foobar")    #=> "fooba"
  p sprintf("%.*s", 5, "foobar") #=> "fooba"

==== ؼ

ؼҤϰηβ򼨤ޤؼҤά뤳ȤϤǤޤ
ؼҤˤ礭ʬ

 * ʸɽؼ: c, s, p
 * ɽؼ: d, i, u, b, o, x, X,
 * ưɽؼ: f, g, e, E, G

ޤ

: c

 ο(0255)ʸɤȤߤʤбʸϤޤ
 ͰʳΥ֥Ȥξ to_int ᥽åɤˤѴߤޤ
 ȤϰΰʸʸĤޤʸΤΤϤޤ
//emlist{
  p sprintf("%c", 97)  #=> "a"
  p sprintf("%c", 'a') #=> "a"
//}

 ե饰 `-'  λ̣ޤ

: s

 ʸϤޤ

  [[c:String]] ֥ȤǤʤ to_s ᥽åɤˤʸ
 ΤȤưޤ

: p

 [[m:Object#inspect]] η̤Ϥޤ
//emlist{
  p sprintf("%s", /e+/)  #=> "(?-mix:e+)"
  p sprintf("%p", /e+/)  #=> "/e+/"
//}


: d
: i

 οͤ10ɽȤƽϤޤ

 Ǥʤдؿ [[m:Kernel.#Integer]] Ʊ§
 Ѵޤ

//emlist{
  p sprintf("%d", -1) #=> "-1"
  p sprintf("%d", 3.1) #=> "3"
  p sprintf("%d", '0b1010') #=> "10"
//}

: u

 οͤʤȤߤʤ10ɽȤƽϤޤ
//emlist{
  p sprintf("%u", '0b1010') #=> "10"
  p sprintf("%u", -1) #=> "-1"
//}


: b
: o
: x
: X

 򤽤줾2ʡ8ʡ16ʡ16(ʸ)ɽʸǽϤޤ

 `#' ե饰ꤹ "0b", "0", "0x", "0X" Ƭղäޤ

 `+', ` ' ե饰ʤ硢οˤ ".." Ƭ(`#' ե饰 
 "0x" ʤɤθ)ղäޤϺǾ̷ʸ̵¤³Ȥ
 ̣2ɽοɽƤޤ

//emlist{
   p sprintf("%#b", 10)    #=> "0b1010"
   p sprintf("%#o", 10)    #=> "012"
   p sprintf("%#x", 10)    #=> "0xa"

   # οФ ".." ղäޤ
   p sprintf("%#b", -1)    #=> "0b..1"
   p sprintf("%#o", -1)    #=> "0..7"
   p sprintf("%#x", -1)    #=> "0x..f"

   p sprintf("%10x", -1)   #=> "       ..f"
   p sprintf("%-10x", -1)  #=> "..f       "

   # ١פꤷ硢".." ղäޤ
   p sprintf("%.10x", -1)  #=> "ffffffffff"
//}

: f
: e
: E
: g
: G

 f Ͼɽ(xxx.xxx)ǿͤϤޤ

 e ϻؿɽ(x.xxxe+xx)ǿͤϤޤ

 g  ؿ -4 꾮ٰʾξ e ƱϤ򡢤
 Ǥ f ƱϤԤޤ0ϼ
 ޤ



 ʸλؼ(E, G)ϽϤΥե٥åȤʸˤޤ
//emlist{
  p sprintf("%f", 1.0) #=> "1.000000"
  p sprintf("%e", 1.0) #=> "1.000000e+00"
  p sprintf("%g", 1.0) #=> "1"
  
  p sprintf("%f", 10.1) #=> "10.100000"
  p sprintf("%e", 10.1) #=> "1.010000e+01"
  p sprintf("%g", 10.1) #=> "10.1"
  
  p sprintf("%g", 10 ** 6)  #=> "1e+06"
  p sprintf("%g", 10 ** -5) #=> "1e-05"
//}
 ٤ξάͤ 6 Ǥ

 ̵硢NaN(Not a Number) ФϤϰʲΤȤǤ
//emlist{
  p sprintf("%f",  1.0/0)  #=> "inf"
  p sprintf("%f", -1.0/0)  #=> "-inf"
  p sprintf("%f",  0.0/0)  #=> "nan"

  p sprintf("%E",  1.0/0)  #=> "INF"
  p sprintf("%E", -1.0/0)  #=> "-INF"
  p sprintf("%E",  0.0/0)  #=> "NAN"
//}
 f, e, E, g, G ˴ؤƤ [[man:sprintf(3)]] η̤ѤƤޤäƽϷ̤
 ºݤˤϥƥ˰¸뤳Ȥˤʤޤ

==== 

٤㤤ΤǺǸޤ

: nth$

 nth ܤΰΥեޥåȤԤȤ򼨤ޤ
//emlist{
  p sprintf("%d, %x, %o", 1, 2, 3) #=> "1, 2, 3"
  p sprintf("%3$d, %2$x, %1$o", 1, 2, 3) #=> "3, 2, 1"
  
  p sprintf("%1$d, %1$x, %1$o", 10) #=> "10, a, 12"
//}
 ˤäƥեޥåȤѤνѤʤ˻
 Ѥޤ
//emlist{
  case ENV['LC_TIME']
  when /^ja_JP/
    fmt = "%1$dǯ%2$d%3$d"
  else
    fmt = "%2$02d/%03$2d/%1$02d"
  end

  p sprintf(fmt, 1, 4, 22) #=> "04/22/01"
//}
 "*" θ˻ꤹ뤳Ȥ
 ٤ǻꤹ뤳ȤǤޤ
//emlist{
  p sprintf("%5.2f", 1)              #=> " 1.00"
  p sprintf("%*.*f", 5, 2, 1)        #=> " 1.00"
  p sprintf("%1$*2$.*3$f", 1, 5, 2)  #=> " 1.00"
//}
