字符串函数主要有四种:
- escape() url编码函数
- e()
- %() 格式化函数
- replace() 替换函数
1.escape(@string)函数
功能
将输入字符串中的特殊字符 使用URL编码进行转码,常见的特殊字符有:
, / ? @ & + ‘ ~ ! $,和所有中文字符。
参数和返回值
参数:要求传入一个用引号包裹的字符串
返回值:返回编码后的结果(不带引号)
实例
escape('a=1') //输入
escape('你好') //输入
a%3D1 // 'a=1' 输出
%E4%BD%A0%E5%A5%BD // '你好' 输出
2.e(@string)函数 (不常用)
e函数和escape类似,但是其不会进行编码,而是将字符串原封不动的输出,但是不带引号
功能
它期望字符串作为参数并按原样返回其内容,但不带引号。它可用于输出无效 CSS 语法或使用 Less 无法识别的专有语法的 CSS 值。
实例
@mscode: "ms:alwaysHasItsOwnSyntax.For.Stuff()"
filter: e(@mscode);
输出:
filter: ms:alwaysHasItsOwnSyntax.For.Stuff();
3. %(string,argument …) 格式化输出函数
这个百分比%形式相信已经见过多次了,在C语言和Python中,都是用%()和占位符(%s,%d等)来进行字符串的格式化的,那么在Less中也沿用了这一特点。
功能
%()函数使用占位符和替换值来格式化输出,第一个参数是带有占位符的字符串。所有占位符都以百分比符号 % 开头,后跟字母 s、S、d、D、a 或 A。其余参数包含替换占位符的表达式。如果你需要输出百分比符号,请使用 %% 进行转义。
如果您需要将特殊字符转义为其 utf-8 转义码,请使用大写占位符。该函数转义除 ()’~! 之外的所有特殊字符。空格编码为 %20。小写占位符保留特殊字符原样。
参数
string:带有占位符的字符串(Less中的占位符只有a、A、d、D、s、S)
argument:需要替换占位符的值或表达式
占位符
在Less中,任何一种占位符(s,S,a,A,d,D)都能替换任何类型的参数(颜色、数字、转义值、表达式……),但是为了规范化和阅读性,我们做出以下约束:
- a,A : 可以用于替换数字类型的参数值,当使用大A时,将会按照utf-8进行编码
- d,D:用于替换字符/字符串类型的参数值,替换的值将包括字符串的引号,使用大D时会按照utf-8进行编码
- s,S:可以用于替换任何一种类型的参数值,但是对于字符/字符串形的值时,将不会包括字符串的引号,而是只取其中的值。
实例
format-a-d: %("repetitions: %a file: %d", 1 + 2, "directory/file.less");
format-a-d-upper: %('repetitions: %A file: %D', 1 + 2, "directory/file.less");
format-s: %("repetitions: %s file: %s", 1 + 2, "directory/file.less");
format-s-upper: %('repetitions: %S file: %S', 1 + 2, "directory/file.less");
编译为:
format-a-d: "repetitions: 3 file: "directory/file.less"";
format-a-d-upper: "repetitions: 3 file: %22directory%2Ffile.less%22";
format-s: "repetitions: 3 file: directory/file.less";
format-s-upper: "repetitions: 3 file: directory%2Ffile.less";
4. replace(@string,pattern,replacement,flags)函数
功能
参数和返回值
参数:
- string: 要搜索和替换的字符串。
- pattern:要搜索的字符串或正则表达式。
- replacement:用于替换匹配到的字符串。
- flags:(可选)正则表达式标志(是否包括大小写等功能)。
实例
replace("Hello, Mars?", "Mars\?", "Earth!"); // \?是问号的转义
replace("One + one = 4", "one", "2", "gi"); // gi是正则表达式的标志,意思为包括大写
replace('This is a string.', "(string)\.$", "new $1.");
replace(~"bar-1", '1', '2'); //在字符串前加~代表输出结果不加引号
输出:
"Hello, Earth!";
"2 + 2 = 4";
'This is a new string.';
bar-2;
注意点
在正则表达式或者匹配字符串的时,如果有特殊字符($ # ? \)等,需要用反斜杠 \ 转义!
如果在替换字符串之前加波浪号~,则代表输出结果不加引号。