如何实现判断字符串变量首尾匹配特定模式的IF-ELSE逻辑?
Terraform中实现字符串开头/结尾判断的IF-ELSE逻辑
Terraform没有Python里直接的str.startswith()或str.endswith()函数,但可以通过字符串切片或正则表达式实现相同的判断逻辑,以下是针对你需求的具体实现:
完整代码示例
变量定义
variable "app_version" { type = string }
本地变量的条件判断实现
locals { # 判断app_version是否以"1"开头,是则为true,否则false var1 = strslice(var.app_version, 0, 1) == "1" # 也可以用正则表达式实现: # var1 = can(regex("^1", var.app_version)) # 判断app_version是否以"a"结尾,是则为0.25,否则为1 var2 = strslice(var.app_version, length(var.app_version)-1, length(var.app_version)) == "a" ? 0.25 : 1 # 也可以用正则表达式实现: # var2 = can(regex("a$", var.app_version)) ? 0.25 : 1 }
逻辑说明
- 字符串切片方式
- 开头判断:
strslice(var.app_version, 0, 1)截取字符串第一个字符,和目标字符"1"直接比较 - 结尾判断:通过
length()获取字符串长度,再用strslice截取最后一个字符,和目标字符"a"比较
- 开头判断:
- 正则表达式方式
^1匹配以"1"开头的字符串,can()函数判断正则匹配是否成功(匹配返回true,不匹配返回false)a$匹配以"a"结尾的字符串,结合三元运算符完成值的赋值
内容的提问来源于stack exchange,提问作者Gino Mempin
相关产品推荐
相关产品推荐

