在字符串中的第三个字符后插入一个字符

Insert a character after third character in a string

在 Liquid 中,我试图在字符串的第三个字符后插入一个特定字符“-”。我已经能够使用 appendprepend 将“-”添加到字符串的开头或结尾,但是我不确定如何在特定点插入它。

示例:{% capture userphone %} {{current_user.phone | append: '-' }} {% endcapture %}

{{userphone}} == '1231231234-'

有没有一种方法可以使用 liquid 在字符 3 和 6 后插入连字符?

{{userphone}} == '123-123-1234'

这是一个带有 slice 过滤器的解决方案:

{%- assign phone = '1231231234' -%}
{%- assign part1 = phone | slice: 0, 3 -%}
{%- assign part2 = phone | slice: 3, 3 -%}
{%- assign part3 = phone | slice: 6, 4 -%} 
{{ part1 | append: '-' | append: part2 | append: '-' | append: part3 }}

上述解决方案意味着您确定 phone 数字包含 10 个字符。可以通过将长度值更改为实际字符串大小或仅更改为某个值来稍微调整它,例如999 确保最后一部分包含所有字符。


你也可以for循环:

{%- assign phone = '1231231234' -%}
{%- assign phoneChars = phone | split: '' -%}
{%- assign phoneWithHyphens = '' -%}
{%- for char in phoneChars -%}
  {%- assign phoneWithHyphens = phoneWithHyphens | append: char -%}
  {%- if forloop.index == 3 or forloop.index == 6 -%}
    {%- assign phoneWithHyphens = phoneWithHyphens | append: '-' -%}
  {%- endif -%}
{%- endfor -%}
{{- phoneWithHyphens -}}