将任意值格式化成字符串输出

安企 CMS 模板中如何将数字、字符串、数组等任意值按指定格式格式化成字符串输出?

stringformat 过滤器可以将数字、字符串、数组等任意值按指定格式格式化成字符串输出。

一些格式化标准:

  • %v 输出结构体 {10 30}
  • %+v 输出结构体显示字段名 {one:10 tow:30}
  • %#v 输出结构体源代码片段 main.Point{one:10, tow:30}
  • %T 输出值的类型 main.Point
  • %t 输出格式化布尔值 true
  • %d 输出标准的十进制格式化 100
  • %b 输出标准的二进制格式化 99 对应 1100011
  • %c 输出定整数的对应字符 99 对应 c
  • %x 输出十六进制编码 99 对应 63
  • %f 输出十进制格式化 99 对应 63
  • %e 输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08
  • %E 输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08
  • %s 进行基本的字符串输出 “\“string\”” 对应 “string”
  • %q 源代码中那样带有双引号的输出 “\“string\”” 对应 “\“string\””
  • %p 输出一个指针的值 &jgt 对应 0xc00004a090
  • % 后面使用数字来控制输出宽度 默认结果使用右对齐并且通过空格来填充空白部分
  • %2.2f 指定浮点型的输出宽度 1.2 对应 1.20
  • %*2.2f 指定浮点型的输出宽度对齐,使用 - 标志 1.2 对应 *1.20

使用方法

stringformat 过滤器的使用方法:

{{ obj|stringformat:"格式定义" }}

比如将 3.141592653 格式化成保留 2 位小数点的数,则可以这么写:

{{ 3.141592653|stringformat:"%.2f" }}
# 显示结果
3.14

示例演示

{{ simple.float|stringformat:"%.2f" }}
{{ simple.uint|stringformat:"Test: %d" }}
{{ simple.chinese_hello_world|stringformat:"Chinese: %s" }}
# 显示结果
Hello!
3.14
Test: 8
Chinese: 你好世界