Łukasz D. Tulikowski
Łukasz D. Tulikowski

Reputation: 1495

Twig replace part of string with chosen character

I want to replace part of string characters with asterisks in Twig.

For example:

SomePartlyVisibleStringHere

I want to change every letter after 4th in this string with asterisks, to have result like that:

Some*********************

Is it possible to do without defining new Twig helper?

Upvotes: 0

Views: 1287

Answers (2)

twharmon
twharmon

Reputation: 4282

This worked for me:

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

If you have to do it more than once I would suggest making a custom filter, then you can just do:

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

Upvotes: 1

rhinosforhire
rhinosforhire

Reputation: 1345

You could make a macro (a function in Twig) and call it whenever you want to do this.

{% 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******************* #}

Example: https://twigfiddle.com/aobt8s

Upvotes: 3

Related Questions