Skip to content
On this page

字符串

split

js
var str="How 1are 2you 3doing 4today?";
// ['How', '1are', '2you', '3doing', '4today?']   
var a=str.split(" ");

// 只要前3个
// ['How', '1are', '2you']
var b=str.split(" ",3);

// ['How ', 'are ', 'you ', 'doing ', 'today?']
var c=str.split(/\d/);   
 // ['How ', 'are ', 'you ']
var d=str.split(/\d/,3);
// 通过后面的数字可以限制str切割后的数量

replace

js
var re = /(\w+)\s(\w+)/;
var str = 'John Smith';
// 从 1 开始
str.replace(re, '$2, $1'); // "Smith, John"
RegExp.$1; // "John"
RegExp.$2; // "Smith"


let str  = "小黑小蔡";
// 插入当前匹配的子串右边的内容
str = str.replace("小黑","$'") // 小蔡小蔡
str = "小黑小蔡";
// 插入当前匹配的子串左边的内容。
str = str.replace("小蔡","$`") // 小黑小黑
str = "小黑小蔡";
// 分组
str = str.replace(/(?<name>小蔡)/,"$<name>zs")
str // 小黑小蔡zs
变量名代表的值
match匹配的子串。(对应于上述的$&。)
p1,p2, ...假如 replace() 方法的第一个参数是一个RegExp 对象,则代表第 n 个括号匹配的字符串。(对应于上述的$1,$2 等。)例如,如果是用 /(\a+)(\b+)/ 这个来匹配,p1 就是匹配的 \a+,p2 就是匹配的 \b+。
offset匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 'abcd',匹配到的子字符串是 'bc',那么这个参数将会是 1)
string被匹配的原字符串。
js
// 所以 $1 是 match 匹配的子串
let s =  'base-act-tab'.replace(/(?:^|-)\w/g, ($1) => {
  console.log($1) // b -a -t
  return $1.toUpperCase()
}) 
console.log(s) // Base-Act-Tab

模板字符串

标签函数

标签函数可以用来处理模板字符串中的表达式,并对它们进行自定义的处理

js
function tag (s,...v){
  // s = [ 'x=', ',y=', '' ]
  // v = [ 10, 100 ]
  console.log(s,v)
}

let x = 10,y = 100;
tag`x=${x},y=${y}`

其中 s 是一个字符串数组,包含了模板字符串中的字面量部分,v 是一个数组,包含了模板字符串中的表达式部分的值

css in js 中会用到这种语法

js
css`
  color: red;
  font-size: ${20 + 10}px;
`