字符串函数主要有四种:

  • escape() url编码函数
  • e()
  • %() 格式化函数
  • replace() 替换函数

1.escape(@string)函数

功能

将输入字符串中的特殊字符 使用URL编码进行转码,常见的特殊字符有:
, / ? @ & + ‘ ~ ! $,和所有中文字符。

参数和返回值

参数:要求传入一个用引号包裹的字符串
返回值:返回编码后的结果(不带引号)

实例

  1. escape('a=1') //输入
  2. escape('你好') //输入
  3. a%3D1 // 'a=1' 输出
  4. %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;

注意点

在正则表达式或者匹配字符串的时,如果有特殊字符($ # ? \)等,需要用反斜杠 \ 转义!

如果在替换字符串之前加波浪号~,则代表输出结果不加引号。