字符串方法
字符串方法用于string
类型的变量,方法如下:
- append
- capitalize
- downcase
- escape
- md5
- newline_to_br
- prepend
- remove
- remove_first
- replace
- replace_first
- slice
- split
- strip
- lstrip
- rstrip
- strip_html
- strip_newlines
- truncate
- truncatewords
- upcase
- url_escape
- url_param_escape
append
拼接字符串:
输入:
{{ 'sales' | append: '.jpg' }}
输出:
sales.jpg
capitalize
将字符串中的首字母转换成大写:
输入:
{{ 'china' | capitalize }}
输出:
China
downcase
将字符串中的字母转成小写:
输入:
{{ 'UPPERCASE' | downcase }}
输出:
uppercase
escape
输出原生 HTML 标签:
输入:
{{ "<p>test</p>" | escape }}
输出:
<p>test</p>
注意:对于特殊字符(比如¥
、'
、%
等),可以正常输出,但在做对比时,需要 escape 做特殊处理。
例如,一个品牌名字,叫 Eve's glow,在展示页面,需要对这个品牌,做特殊的视觉效果。
通常的做法:
{% if product.vendor.name == 'Eve's glow' %}
<!-- 特殊的内容 -->
{% endif %}
这种情况下,特殊内容无法输出,这是由于,品牌名字中,包含了特殊字符'
。
在做比较判断时,需要做如下处理:
<!-- product.vendor.name = 'Eve's glow' -->
{% capture vendor %}{{ "Eve's glow" | escape }}{% endcapture %}
{% if product.vendor.name == vendor %}
品牌:{{ vendor }}
{% endif %}
<!-- 输出:品牌:Eve's glow -->
md5
生成字符串的 MD5 散列值:
输入:
{{ '你好,世界' | md5 }}
输出:
dbefd3ada018615b35588a01e216ae6e
newline_to_br
将字符串中的换行符,转换成 HTML 标签<br/>
:
输入:
{% capture var %}
One
Two
Three
{% endcapture %}
{{ var | newline_to_br }}
输出:
<br>
One <br>
Two<br>
Three<br>
prepend
在字符串前面,拼接另外一个字符串:
输入:
{{ '品牌' | prepend: '属于你的' }}
输出:
属于你的品牌
remove
移除字符串中匹配到的字符:
输入:
{{ "你好,世界,我在中国。" | remove: "世界," }}
输出:
你好,我在中国。
remove_first
移除字符串中匹配到的第一个需要删除的字符串;
输入:
{{ "你好,世界。再会,世界。" | remove_first: ",世界" }}
输出:
你好。再会,世界。
replace
替换字符串中匹配到的字符:
输入:
<!-- product.title = "漂亮T恤" -->
{{ product.title | replace: '漂亮', '一级棒' }}
输出:
一级棒T恤
replace_first
替换字符串中第一个匹配到的字符:
输入:
<!-- product.title = "漂亮真漂亮的T恤" -->
{{ product.title | replace_first: '漂亮', '一级棒' }}
输出:
一级棒真漂亮的T恤
slice
截取字符串的一部分输出,第一个参数为截取位置(整数,字符串从左边开始第一个字符为 0,当为负数时从字符串末端开始倒数),第二个参数为截取长度(正整数,可不传,则默认为 1):
输入:
{{ "hello" | slice: 2 }}<br>
{{ "hello" | slice: 1, 3 }}<br>
{{ "hello" | slice: -3, 2 }}<br>
输出:
l
ell
ll
split
使用指定参数,将字符串分隔成为数组:
输入:
{% assign words = "不 仅 是 开 店 更 是 享 受 创 造 的 乐 趣" | split: ' ' %}
第一个字: {{ words.first }}<br>
第一个字: {{ words[0] }}<br>
第二个字: {{ words[1] }}<br>
最后一个字: {{ words.last }}<br>
所有字: {{ words | join: ', ' }}<br>
{% for word in words %}
{{ word }}
{% endfor %}
输出:
第一个字: 不
第一个字: 不
第二个字: 仅
最后一个字: 趣
所有字: 不, 仅, 是, 开, 店, 更, 是, 享, 受, 创, 造, 的, 乐, 趣
不 仅 是 开 店 更 是 享 受 创 造 的 乐 趣
strip
移除字符串左右两侧的制表符(Tab)、空格和换行:
输入:
{{ ' 两侧空格 ' | size }}<br/>
{{ ' 两侧空格 ' | strip | size }}
输出:
10
4
lstrip
移除字符串左侧的制表符(Tab)、空格和换行:
输入:
{{ ' 两侧空格 ' | size }}<br/>
{{ ' 两侧空格 ' | lstrip | size }}
输出:
10
7
rstrip
移除字符串右侧的制表符(Tab)、空格和换行:
输入:
{{ ' 两侧空格 ' | size }}<br/>
{{ ' 两侧空格 ' | rstrip | size }}
输出:
10
7
strip_html
移除字符串中所有 HTML 标签:
输入:
{{ "<h1>Hello</h1> World" | strip_html }}
输出:
Hello World
strip_newlines
移除字符串中的所有换行符:
输入:
{% capture var %}
不仅是开店,
更是享受创造的乐趣。
{% endcapture %}
{{ var | strip_newlines }}
输出:
不仅是开店,更是享受创造的乐趣。
truncate
按指定参数截断字符串,多余的字符串用省略号...
代替,其中的省略号,也包括在指定参数长度中:
输入:
{% capture var %}
不仅是开店,
更是享受创造的乐趣。
{% endcapture %}
{{ var | truncate: 7 }}
输出:
不仅是...
upcase
将字符串中英文字母转成大写:
输入:
{{ 'newbalance' | upcase }}
输出:
NEWBALANCE
url_escape
将字符串进行一次 URL 编码:
输入:
{{ "<你好> & <世界>" | url_escape }}
输出:
%3C%E4%BD%A0%E5%A5%BD%3E+%26+%3C%E4%B8%96%E7%95%8C%3E
url_param_escape
将字符串针对 URL 参数规则进行编码:
输入:
{{ "<你好> & <世界>" | url_escape }}
输出:
%3C%E4%BD%A0%E5%A5%BD%3E+&+%3C%E4%B8%96%E7%95%8C%3E