likes
comments
collection
share

错过你一定会后悔的字符串及其api总结

作者站长头像
站长
· 阅读数 40

字符串及其api总结

1.字符串的定义

  • 多个字符组成的【只读】字符【数组】!

    1. 【只读】:字符串所有的API都不会修改原字符串,只会返回新的字符串。

    2. 【数组】:跟数组有相同点

      • 字符串可以使用下标获取某个字符
      • 字符串可以使用length获取字符的长度
      • 字符串可以遍历得到每个字符
      • 字符串可以使用数组不修改原数组的API(concat、slice)
      • 差异:所有数组中直接修改原数组的API,字符串都不可以使用!

2.JS内置对象(引用类型):11个

  • String Number Boolean -> 包装类型:

    1. 专门封装原始类型的值,将原始类型悄悄的变成了引用类型的对象(属性和方法)

    2. 为什么:

      • 前辈们觉得比如字符串经常会被我们拿来做一些操作,为了方便我们程序员,提供了包装类型,把字符串变成了一个对象,提供了我们一些操作字符串的属性和方法
      • 本身原始类型的值,不带有任何属性和方法,意味着不能使用.去做操作的
    3. 何时使用:只要你试图使用.去操作原始类型的值的时候,包装类型就会悄悄出现

    4. 何时释放:方法一旦调用结束,包装类型就会自动释放

    5. 为什么undefined和null不能使用,他们俩没有提供过包装类型(没有任何属性和方法)

  • Array

  • Function

  • Date(日期)

  • Math(数学)

  • RegExp(正则:验证)

  • Error(错误)

  • Object(面向对象)

  • Global(全局对象):

    1. 保存着全局变量和全局函数,只不过浏览器端/客户端/前端global被window代替了,以后我们学习Node.js后端语言的时候你会发现全局真的是global
    2. 唯独window对象可以省略不写

3.转义字符:\

  • 何时使用:在字符串中出现了和程序冲突的字符

    1. 比如:希望在""中再放入一个",或''之中再放入一个'

    2. 具有特殊功能

      • \n 换行
      • \t 制表符:就是你敲tab键带来的一个大空格
    3. 可以书写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
    
  • 注意:

    1. starti可以省略,如果省略默认从0位置开始向右查找

    2. 返回:如果找到了,返回关键字的第一个字符的下标。

      没找到返回-1,重点:我们其实根本不关心下标为几,我们只关心下标为不为-1,为-1说明没有,如果不为-1说明存在

      var str="hello world你好世界";
      var i=str.indexOf("j")
      console.log(i)//-1
      
    3. 数组也可以使用:其实以前数组是没有这个方法的,某次浏览器更新后,数组才可以使用的(老IE用不到)

    4. 笔试题:找到所有关键字的下标

      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']
    
  • 注意:

    1. 切割符是可以自定义的,切割后会返回一个数组,数组中不在包含切割符

    2. 如果传入的切割符"",每一个字符都会被切散

      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
评论
请登录