LOGO
首页 小说列表 排行榜 搜索

    cxlrpgxp-第3页  护眼阅读

  • 第1页
  • 上一页
  • 下一页

    温馨提醒:系统正在全面升级。您可以访问最新站点。谢谢!

      在 [] 中同字符串一样可以使用控制码,以及正则表达式 \w、\W、\s、\S、\d、\D(这些都是表示字符簇的简写法)。

      请注意,下面包含否定意味的字符簇也将匹配换行符(正则表达式 \W、\D 也是如此)。

      p /[^a-z]/ =~ "\n" # => 0sprintf 格式

      Ruby 的 sprintf 格式与 C 语言的 sprintf(3) 基本相同。但还是有些差别,比如它没有如 short 或 long 等针对 C 特有类型的修饰符,它包含 2 进制数的指示符 (%b),它不支持 sprintf 的方言式的语法。

      下面就对 ruby 的 sprintf 格式进行详细的说明。

      sprintf 格式的规格如下所示。[] 中的部分是可选的。

      %[标识符][宽度][.精度]指示符

      若想输出“%”本身时,请这样“%%”处理。

      下面就分别介绍一下各元素的用法。

      标识符标识符包括“#”,“+”,“ ”(空格),“-”和“0”这 5 个。

      #

      使用 2 进制、8 进制、16 进制的指示符(“b”,“o”,“x”,“X”)时,会分别添加“0b”,“0”,“0x”,“0X”前缀。

      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”),则必定在输出中添加“.”。

      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。

      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”的话,则会为负数添加“-”。

      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”)起作用。

      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”而并非空格来填充多余部分。

      它只对数值指示符(“d”,“i”,“b”,“o”,“x”,“X”,“u”,“f”,“g”,“G”)起作用(对“e”,“E”无效)。

      p sprintf("%010d", 10)

      # => "0000000010"

      与“#”一起使用时,输出情况如下。

      p sprintf("%#010x", 10) # => "0x0000000a"

      p sprintf("%#010o", 10) # => "0000000012"

      p sprintf("%#010b", 10) # => "0b00001010"

      它等同于下例。

      p sprintf("%#10.8x", 10) # => "0x0000000a"

      p sprintf("%#10.9o", 10) # => "0000000012"

      p sprintf("%#10.8b", 10) # => "0b00001010"

      通常情况下, 会输出如下内容。

      p sprintf("%#10x", 10) # => " 0xa"

      p sprintf("%#10o", 10) # => " 012"

      p sprintf("%#10b", 10) # => " 0b1010"

      宽度以非 0 数字开头的数串负责指定宽度。宽度是指生成字符串的宽度,它不受后文中的「精度」的限制。

      确定宽度时,也会考虑「标识符」中附加的“ ”,“+”,“-”,“0b”,“0”,“0x”,“0X”的长度。

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

      宽度是指「必要的最小宽度」。若结果字符串的宽度超过指定宽度时,指定宽度就会失效。

      若将宽度指定为“*”时,将从参数中取得宽度值。

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

      p sprintf("%*s", 10, "foo") # => " foo"

      精度紧跟在“.”后面的数串表示精度(若只有“.”的话,则为“.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

      将参数的数值(0×255)看作是字符代码,并输出对应的字符。若参数并非数值、String、nil、true 或 false 的话,将尝试用 to_int 方法进行变换。

      此时,只有标识符“-”和「宽度」的设定是有效的。

      s

      输出字符串。

      若参数并非 String 对象的话,将使用 to_s 方法对其进行变换。

      p

      输出 Object#inspect 的结果。

      p sprintf("%s", [1, 2, 3]) # => "123"

      p sprintf("%p", [1, 2, 3]) # => "[1, 2, 3]"

      d

      i

      以 10 进制整数的形式输出参数中的数值。

      若参数并非整数,则将其变为整数。

  • 第1页
  • 上一页
  • 下一页
联系我们

电话: 400-123-4567

工信备案:(湘ICP备2021002763号-1)

©版权所有2018-2026

技术支持:近思之

友情链接
微信 | 微博2730298