Twig用所选字符替换字符串的一部分

时间:2016-11-02 22:19:03

标签: twig

我想在Twig中用星号替换部分字符串字符。

例如:

instance_profile = iam.create_instance_profile(
    InstanceProfileName='string',
    Path='string'
)

我想用星号更改此字符串中第4个后面的每个字母,得到的结果如下:

SomePartlyVisibleStringHere

是否可以不定义新的Twig助手?

2 个答案:

答案 0 :(得分:3)

你可以制作一个macro(Twig中的一个函数)并在你想要的时候调用它。

{% macro redact(topSecret) %}
    {% set length = topSecret|length - 4 %}
    {{ topSecret|slice(0, 3) }}{% for i in 0..length %}*{% endfor %}
{% endmacro %}

{# You have to import from _self if the macro is declared in the same file. #}
{% import _self as sharpie %}

{{ sharpie.redact('Top secret information') }}
{# => Top******************* #}

示例:https://twigfiddle.com/aobt8s

答案 1 :(得分:1)

这对我有用:

{% set string = 'SomePartlyVisibleStringHere' %}
{% set starCount = string|length - 4 %}
{{ string[:4] }}{% for i in 1..starCount %}*{% endfor %}

如果您不止一次这样做,我会建议making a custom filter,那么您可以这样做:

{% set string = 'SomePartlyVisibleStringHere' %}
{{ string|customFilterName }}