获取 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 }}
(感谢 的主要思想。)
我想用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 }}
(感谢