获取 Liquid 中字符串的最后两个字符

Get last two characters of a string in Liquid

我想用Liquid提取字符串的最后两个字符,但是我没有找到好的方法。

到目前为止,我最好的尝试是假设字符串是一个大数字(这在我的特定用例中是一个有效的假设)并使用“对数字取模 100”,即我正在使用

{{{some_object.${some_numeric_property} | modulo:100 }}

这种方法有两个问题:

a) 显然它只适用于数字。

b) 它不适用于以 00--09 结尾的数字,例如如果字符串是'76368408',模运算的结果是'8',而不是'08'。

所以我想这个问题是双重的: 一世。理想情况下,是否有通用的方法来拆分 Liquid 中字符串的最后两个字符? 二.如果没有,有没有办法在不删除尾随零的情况下拆分最后一个数字的最后两位数?

代码可能可以改进,但是应该这样做:

{% liquid 
  assign last_two_chars = "" 
  assign split_word = "last two chars" | split: ""
  
  for char in split_word 
    assign char_before_last_index = forloop.length | minus: 1  
    if forloop.index == char_before_last_index 
      assign last_two_chars = last_two_chars | append: char 
    endif 
    if forloop.last 
      assign last_two_chars = last_two_chars | append: char 
    endif 
  endfor 
%}

last_two_chars: {{ last_two_chars }}

对于字符串:带有负索引的切片。

{{ some_object.${some_property} | slice: -2,2 }}

对于数字:首先转换为字符串,然后使用负索引切片。

{{ some_object.${some_numeric_property} | append:"" | slice: -2,2 }} 

(感谢 的主要思想。)