如何在Ansible Jinja模板中将字符串下划线(_)转为连字符(-)
在Ansible Jinja模板中转换下划线为连字符的解决方案
嘿,针对你要把example_test_password转换成test-password的需求,这里有两个简单好用的方法:
方法1:利用字符串分割与切片拼接
Jinja2支持对字符串进行分割操作,我们可以先把原字符串按下划线分割成列表,然后取最后两个元素,再用连字符拼接起来:
{{ "example_test_password" | split('_')[-2:] | join('-') }}
逻辑拆解:
split('_'):把字符串拆成['example', 'test', 'password'][-2:]:取列表的最后两个元素,得到['test', 'password']join('-'):用连字符把这两个元素拼接成test-password
方法2:使用正则表达式替换
如果更习惯用正则,也可以通过匹配最后两段下划线分隔的内容来替换:
{{ "example_test_password" | regex_replace('.*_(.*)_(.*)', '\\1-\\2') }}
逻辑拆解:
.*_(.*)_(.*):匹配任意字符直到倒数第二个下划线,然后捕获后面的两段内容(test和password)\\1-\\2:把捕获的两组内容用连字符连接起来
这两种方法都能完美实现你的需求,你可以根据自己的习惯选择~
内容的提问来源于stack exchange,提问作者Muhammed Roshan
相关产品推荐
相关产品推荐

