字符串属性和方法

一、最基础的东西

1.字符串的拼接

let stringName = "my name " + "is NiuJinJin";
stringName;    // my name is NiuJinJin
复制代码

2.字符串的属性:length,获取字符串的长度

// 还是拿上面的例子说明
stringName.length;    // 20,说明包含了空格
复制代码

正题:JS提供的方法

这里需要引申:后期博客:明白这些方法背后的原理

下面的例子,变量全部都在上面声明好了

这里的方法都不会改变原来的字符串

1.charAt(index);

// index是stringName的字符串索引;
// 返回字符串中该索引的字符
stringName.charAt(0);    // m  第一个字符
stringName.charAt(stringName.length-1)   // n  最后一个字符

复制代码

2.substring(startIndex,endIndex);

// 字符串截取
// startIndex是开始索引,说人话:“从哪儿开始截取!”
// endIndex是结束索引,“到哪儿结束”,但是不能包含该索引,
stringName.substring(1,7);  // y name,从索引1号位开始截取,一直到4,但不能包含4(截取到索引6号位)
复制代码

3.slice(startIndex,endIndex);

// 字符串截取
// 用法和substring类似,不同点在于:substring传入负数就是默认值,
stringName.slice(1,7);    // y name
stringName.slice(-9);    // NiuJinJin,索引位置的确定,从字符串末尾开始倒数索引
复制代码

4.indexOf(stringParam,[startIndex]);

// 字符串查找(这里的字符我理解成单个的字符串,所以,字符和字符串全部被理解成字符串)
// 查找参数字符串首次在字符串中出现的位置,并将该索引返回
stringName.indexOf('n');    // 3
// 可选参数:startIndex,指定从startIndex这个索引之后开始查找
stringName.indexOf('n',4);    // 16
复制代码

5.lastIndexOf(stringParam,[startIndex]);

// 字符串查找,字符串最后一次出现的位置,并将该索引返回
stringName.lastIndexOf('n');    // 19
// 同上,该方法也有第二个可选参数,指定从startIndex这个索引之前开始查找
stringName.lastIndexOf('n',18);    // 16
复制代码

6.split(seperator);

// 字符串转数组方法:seperator将与字符串匹配,返回指定位置的子字符串
stringName.split(' ');    //[ 'my', 'name', 'is', 'NiuJinJin' ]
复制代码

7.replace(str1,str2);

// 字符串替换,首先查找是否有str1子串,如果匹配不上,则返回原来字符串,否则将字符串中str2替换str1子串
复制代码

8.toUpperCase()、toLowerCase();

将字符串全部大写/小写并返回
复制代码

ES6的方法

1.字符串的解构赋值

// 字符串转换成了类似数组的对象
let [a,b,c,d,e] = "niujinjin";
a    // n
b    // i
c    // u
d    // j
e    // i
let {length:length_} = "niujinjin";
length_    // 9

复制代码

2.字符串遍历方法 for…of

// 当然,传统的for循环也可以达到这个目的,但是for...of可以识别更多的码点。
for(let item of "niu~"){
    console.log(item);    // n i u ~
}
复制代码

3.at(index);

// 和charAt功能相同,但是at()方法识别的字符更多。
复制代码

4.includes(sonStr)、startsWith(sonStr)、endsWith(sonStr);

1.includes(sonStr)    // 返回布尔值,判断字符串是否包含参数sonStr
stringName.includes("NiuJinJin");    // true

2.startsWith(sonStr)    // 返回布尔值,判断参数是否在字符串的头部;
stringName.startsWith("NiuJinJin");    // false,它在尾部

3.endsWith(sonStr)    // 返回布尔值,判断参数是否在字符串的尾部;
stringName.endsWith("NiuJinJin");    // true

复制代码

5.repeat(number);

// 返回一个新的字符串,这个字符串会被重复number次。
"NiuJinJin".repeat(2);    // NiuJinJinNiuJinJin
"NiuJinJin".repeat(2.8);    // NiuJinJinNiuJinJin,重复2次,说明是向下取整
"NiuJinJin".repeat(-2.8);    // RangeError: Invalid count value
"NiuJinJin".repeat(Infinity);    // RangeError: Invalid count value
"NiuJinJin".repeat(-0.9);    // 取整为0

// 总结:
// 当参数是正数时(正整数和浮点数),则向下取整进行repeat
// 当参数是负数时,并且小于-1或者Infinity,会报错
// 当参数是负数,范围在0~1之间,则取整为0;
复制代码

6.padStart()、padEnd();


1.padStart(length,sonStr);
// 字符串填充,判断字符串是否达到length的长度,如果没有,则在字符串的头部开始填充子串sonStr,直到字符串长度达到length;
"NiuJinJin".padStart(15,"1");    // 111111NiuJinJin
"NiuJinJin".padStart(15,"abcdefghijk");    // abcdefNiuJinJin,后面的ghijk没有填充进去,因为长度到了。

2.padEnd(length,sonStr);
// 和 1 是一样的,不同的是,从字符串的尾部开始填充子串
复制代码

7.字符串模板

// 好处多多:可以当做普通字符串使用,也可以定义多行字符串(☆☆☆),或者在字符串中嵌入变量(☆☆☆)
`${stringName}`;    // my name is NiuJinJin
// 即可以认为字符串模板允许字符串嵌套变量
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享