错过你一定会后悔的字符串及其api总结
字符串及其api总结
1.字符串的定义
-
多个字符组成的【只读】字符【数组】!
-
【只读】:字符串所有的API都不会修改原字符串,只会返回新的字符串。
-
【数组】:跟数组有相同点
- 字符串可以使用下标获取某个字符
- 字符串可以使用length获取字符的长度
- 字符串可以遍历得到每个字符
- 字符串可以使用数组不修改原数组的API(concat、slice)
- 差异:所有数组中直接修改原数组的API,字符串都不可以使用!
-
2.JS内置对象(引用类型):11个
-
String Number Boolean -> 包装类型:
-
专门封装原始类型的值,将原始类型悄悄的变成了引用类型的对象(属性和方法)
-
为什么:
- 前辈们觉得比如字符串经常会被我们拿来做一些操作,为了方便我们程序员,提供了包装类型,把字符串变成了一个对象,提供了我们一些操作字符串的属性和方法
- 本身原始类型的值,不带有任何属性和方法,意味着不能使用.去做操作的
-
何时使用:只要你试图使用.去操作原始类型的值的时候,包装类型就会悄悄出现
-
何时释放:方法一旦调用结束,包装类型就会自动释放
-
为什么undefined和null不能使用,他们俩没有提供过包装类型(没有任何属性和方法)
-
-
Array
-
Function
-
Date(日期)
-
Math(数学)
-
RegExp(正则:验证)
-
Error(错误)
-
Object(面向对象)
-
Global(全局对象):
- 保存着全局变量和全局函数,只不过浏览器端/客户端/前端global被window代替了,以后我们学习Node.js后端语言的时候你会发现全局真的是global
- 唯独window对象可以省略不写
3.转义字符:\
-
何时使用:在字符串中出现了和程序冲突的字符
-
比如:希望在""中再放入一个",或''之中再放入一个'
-
具有特殊功能
- \n 换行
- \t 制表符:就是你敲tab键带来的一个大空格
-
可以书写unicode号代表一个字
- \uXXXX
- 汉字 的第一个字:\u4e00
- 汉字的最后一个字:\u9fa5
-
4.英文转大小写:toUpperCase toLowerCase
-
作用:【统一的】将字符串转为大写或小写,再比较(只要是验证码==》忽略大小写)
-
大写:var upper=str.toUpperCase();
var str="Lorem ipsum dolor sit amet, consectetur adipisicing elit."; var upperStr=str.toUpperCase(); console.log(upperStr);//LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISICING ELIT.
-
小写:var lower=str.toLowerCase();
var str="Lorem ipsum dolor sit amet, consectetur adipisicing elit."; var lowerStr=str.toLowerCase(); console.log(lowerStr);//lorem ipsum dolor sit amet, consectetur adipisicing elit.
5.获取字符串中某个字符:charAt
-
语法:str.charAt(i); === str[i];
var str="hello world你好世界"; console.log(str.charAt(0));//h
6.获取字符串中某个字符的ascii码:charCodeAt
-
语法:var ascii=str.charCodeAt(i);
var str="hello world你好世界"; console.log(str.charCodeAt(0));//104
-
通过ascii码转回原文
var str="hello world你好世界"; console.log(String.fromCharCode(104));//h
7.检索字符串:indexOf
-
何时:判断有没有,不重复!
-
语法:var i=str/arr.indexOf("关键字",starti);
var str="hello world你好世界"; var i=str.indexOf("h") console.log(i)//0
-
注意:
-
starti可以省略,如果省略默认从0位置开始向右查找
-
返回:如果找到了,返回关键字的第一个字符的下标。
没找到返回-1,重点:我们其实根本不关心下标为几,我们只关心下标为不为-1,为-1说明没有,如果不为-1说明存在
var str="hello world你好世界"; var i=str.indexOf("j") console.log(i)//-1
-
数组也可以使用:其实以前数组是没有这个方法的,某次浏览器更新后,数组才可以使用的(老IE用不到)
-
笔试题:找到所有关键字的下标
var str="no zuo no die no can no bibi"; var index=-1; while((index=str.indexOf("no",index+1))!=-1){ console.log("找到了,下标为:"+index); } //找到了,下标为: 0 //找到了,下标为: 7 //找到了,下标为: 14 //找到了,下标为: 21
-
8.拼接字符串:concat
-
语法:var newStr=str.concat(str1,str2,....); 还不如 + 运算符
var str="hello world"; var newStr=str.concat("你好世界"); console.log(newStr)//hello world你好世界
9.截取子字符串(3种):slice substring substr
-
var subStr=str/arr.slice(starti,endi+1);//slice不光字符串可用,数组也可以用,但是下面两个方法只能字符串能用
var str = "hello world你好世界"; var newStr=str.slice(0,11); console.log(newStr);//hello world
-
var subStr=str.substring(starti,endi+1);//几乎和slice一致,但是不如slice,因为不支持负数参数
var str = "hello world你好世界"; var newStr=str.substring(0,11); console.log(newStr);//hello world
-
var subStr=str.substr(starti,n);//截取的个数,不必考虑含头不含尾
var str = "hello world你好世界"; var newStr=str.substr(-4,4); console.log(newStr);//你好世界
10.替换字符串:replace
-
语法:var newStr=str.replace("固定关键字"/RegExp,"新内容");
var str = "卧槽,我操,我草,握草,卧草,我曹,窝草,窝槽"; var newStr = str.replace("我操", "**"); console.log(newStr);//**,**,**,**,**,**,**,** var newStr = str.replace(/[卧我握窝][槽操草曹]/g, "**"); console.log(newStr);//**,**,**,**,**,**,**,**
11.切割/分割字符串:split
-
语法:var arr=str.split("自定义切割符")
-
功能:字符串<=>数组
var str="tom&jerry&rose&jack&jordan"; console.log(str.split("&"));//['tom', 'jerry', 'rose', 'jack', 'jordan']
-
注意:
-
切割符是可以自定义的,切割后会返回一个数组,数组中不在包含切割符
-
如果传入的切割符"",每一个字符都会被切散
var str="tom&jerry&rose&jack&jordan"; console.log(str.split(""))// ['t', 'o', 'm', '&', 'j', 'e', 'r', 'r', 'y', '&', 'r', 'o', 's', 'e', '&', 'j', 'a', 'c', 'k', '&', 'j', 'o', 'r', 'd', 'a', 'n']
\
-
转载自:https://juejin.cn/post/7144278547459211278