字符串函数
约 1294 字大约 4 分钟
2025-04-19
一、match()
匹配
match()
函数允许你从字符串中提取匹配项。
1、语法
match(pattern, val[, flags])
2、参数
pattern
:正则表达式模式。val
:要匹配的字符串。flags
:可选的标志参数,用于控制匹配行为。g
:全局匹配,找到所有匹配项。i
:忽略大小写。m
:多行匹配。s
:允许.
匹配换行符。
3、返回值
- 如果匹配成功,则返回匹配项。
- 如果匹配失败,则返回
null
。
4、示例
match('^(height|width)?([<>=]{1,})(.*)', 'height>=1024px')
// => 'height>=1024px' 'height' '>=' '1024px'
match('^foo(?:bar)?', 'foo')
// => 'foo'
match('^foo(?:bar)?', 'foobar')
// => 'foobar'
match('^foo(?:bar)?', 'bar')
// => null
match('ain', 'The rain in SPAIN stays mainly in the plain')
// => 'ain'
match('ain', 'The rain in SPAIN stays mainly in the plain', g)
// => 'ain' 'ain' 'ain'
match('ain', 'The rain in SPAIN stays mainly in the plain', 'gi')
// => 'ain' 'AIN' 'ain' 'ain'
二、replace()
替换
replace()
函数允许你替换字符串中的匹配项。将所有 pattern
匹配项替换为 replacement
后,返回字符串 val
。
1、语法
replace(pattern, replacement, val)
2、参数
pattern
:正则表达式模式。replacement
:替换的字符串或函数。val
:要替换的字符串。
3、返回值
- 返回替换后的字符串。
4、示例
replace(i, e, 'griin') // => 'green'
replace(i, e, griin) // => #008000
三、join()
连接
join()
函数允许你将字符串或列表连接在一起。
1、语法
join(delim, val[, val...])
2、参数
delim
:字符串的分隔符。val
:要连接的字符串或列表。
3、返回值
- 返回连接后的字符串。
4、示例
join(' ', 1 2 3) // => "1 2 3"
join(',', 1 2 3) // => "1,2,3"
join(', ', foo bar baz) // => "foo, bar, baz"
join(', ', foo, bar, baz) // => "foo, bar, baz"
join(' - ', 1 2, 3 4, 5 6) // => "1 2 - 3 4 - 5 6"
四、split()
分割
split()
函数允许你将字符串按照指定分隔符分割成子字符串。
1、语法
split(delim, val)
2、参数
delim
:字符串的分隔符,可以是字符串或正则表达式。val
:要分割的字符串。
split(_, bar1_bar2_bar3)
// => bar1 bar2 bar3
split(_, 'bar1_bar2_bar3')
// => 'bar1' 'bar2' 'bar3'
五、substr()
截取
substr()
方法返回字符串中从指定位置开始到指定字符数的字符。
1、语法
substr(val, start, length)
2、参数
val
:要截取的字符串。start
:要截取的起始位置。length
:要截取的字符数。
3、返回值
- 返回截取后的字符串。
4、示例
substr(ident, 1, 2) // => de
substr('string', 1, 2) // => 'tr'
val = dredd
substr(substr(val, 1), 0, 3) // => #f00
六、slice()
截取
slice()
方法提取字符串/列表的一部分并返回一个新的字符串/列表。
1、语法
slice(val, start, end)
2、参数
val
:要截取的字符串或列表。start
:要截取的起始位置。end
:要截取的结束位置(可选,默认为length(val)
)。
3、返回值
- 返回截取后的字符串或列表。
4、示例
slice('lorem' 'ipsum' 'dolor', 1, 2)
slice('lorem' 'ipsum' 'dolor', 1, -1)
// => 'ipsum'
slice('lorem ipsum', 1, 5) // => 'orem'
slice(rredd, 1, -1) // => #f00
slice(1px solid black, 1) // => solid #000
七、unquote()
移除引号
移除给定字符串的引号。
1、语法
unquote(str)
2、参数
str
:要移除引号的字符串。
3、返回值
- 返回移除引号后的字符串。
4、示例
unquote("sans-serif") // => sans-serif
unquote(sans-serif) // => sans-serif
unquote('1px / 2px') // => 1px / 2px
八、convert()
转换
在 Stylus 中,convert()
是一个内置函数,用于 转换值的单位或类型,比如将像素(px
)转换为百分比(%
)、将十六进制颜色(#ff0000
)转换为 RGBA(rgba(255,0,0,1)
)等。它提供了一种灵活的方式来动态调整 CSS 值的格式。
1、语法
convert(value, targetType)
2、参数
value
:要转换的值,可以是任何 Stylus 节点。targetType
:可选参数,指定要转换的目标类型。如果不提供,则根据value
的类型进行自动转换。unit
:将值转换为单位。color
:将值转换为 RGBA 颜色。ident
:将值转换为标识符。
目标类型 | 作用 | 示例 | 编译结果 |
---|---|---|---|
'%' | 转换为百分比 | convert(16px, '%') | 100% |
'rgba' | 转换为 RGBA 颜色 | convert(#ff0000, 'rgba') | rgba(255,0,0,1) |
'hsla' | 转换为 HSLA 颜色 | convert(#ff0000, 'hsla') | hsla(0,100%,50%,1) |
'' | (空字符串) 移除单位 | convert(16px, '') | 16 |
3、返回值
- 返回转换后的 Stylus 节点。
4、示例
unit = convert('40px') // => 40px
typeof(unit) // => 'unit'
color = convert('#fff') // => rgba(255,255,255,1)
typeof(color) // => 'rgba'
foo = convert('foo') // => foo
typeof(foo) // => 'ident'
九、s()
在 Stylus 中,s() 是一个内置函数,用于 将值转换为字符串 或 对字符串进行格式化处理。它的名字来源于 "string"(字符串),主要用途包括:
- 强制转换为字符串
- 字符串插值(类似 JavaScript 的模板字符串)
- CSS 特殊字符的转义处理
1、语法
s(format, arguments...)
format
:字符串格式,可以包含占位符(%s
),用于插值。arguments...
:可选参数,用于替换format
中的占位符。
2、示例
s('bar()'); // => bar()
s('bar(%s)', 'baz'); // => bar("baz")
s('bar(%s)', baz); // => bar(baz)
s('bar(%s)', 15px); // => bar(15px)
s('rgba(%s, %s, %s, 0.5)', 255, 100, 50); // => rgba(255, 100, 50, 0.5)
s('bar(%Z)', 15px); // => bar(%Z)
s('bar(%s, %s)', 15px); // => bar(15px, null)
查看 %
字符串运算符以了解等效行为。
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于