PAYATHON 2026

Terraform 如何从字符串开头截取并保留末尾 14 个字符?

数据小陈

结论

format() 的精度不能通过从字符串末尾截取来设置。对于 %s,.14 表示从字符串开头最多取 14 个字符。- 标志只控制指定字段宽度时的左对齐,不会改变截取方向。

因此,format("%-.14s", "one_two_three_four_five_six_seven") 的结果仍是 "one_two_three_"。若要保留末尾 14 个字符,可以用 substr() 计算起始位置:

locals {
  project_name_suffix = length(var.project_name) > 14 ? substr(var.project_name, length(var.project_name) - 14, 14) : var.project_name
}

如果 var.project_name 超过 14 个字符,就从总长度减去 14 的位置开始截取;否则保留原字符串。以上面的字符串为例,结果是:

five_six_seven

关于 - 标志

格式字符串中的 - 标志用于在指定字段宽度时左对齐内容。字段宽度大于字符串长度时,它会影响填充空格的位置,但不会改变 .14 从字符串开头取字符的行为。

使用 strrev() 的替代写法

也可以先反转字符串,截取后再反转回来:

strrev(format("%-.14s", strrev("one_two_three_four_five_six_seven")))

这种写法需要反转两次,读起来也更绕。用 substr() 计算起始位置更清楚。

备注:内容仅供参考。