组团学

ECMAScript内置对象-字符串

阅读 (355)

一、字符串对象与字符串变量

字符串对象:属于引用类型,封装属性与方法。在前端开发中有许多关于字符串的操作。基本类型的字符串无法完成这些操作,js就添加了一种引用类型的字符串,在该引用类型中封装了有关字符串的属性和方法,方便开发者对字符串进行操作

区别:

  • 数据类型不一样
  • 引用类型的字符串包含了属性和方法,通常说引用类型的String是字符串包装类型

注意:

  • 实际操作中,基本类型的字符串可以直接使用引用类型的字符串中封装的属性与方法,不要自己手动转换
  • 字符串创建之后就不能改变了
var str1 = "sunck is a good man"; //字符串对象,引用类型,Object var str2 = new String("sunck is a nice man"); console.log(typeof str1); console.log(typeof str2); //字符串创建之后就不能改变了 // str1[0] = "a" console.log("str1 = " + str1); console.log("str2 = " + str2);

二、字符串长度

//这是String类型,是基本类型 var str1 = "sunck is a good man"; //字符串对象,引用类型,Object var str2 = new String("sunck is a nice man"); //str1是String基本类型,当使用String的引用类型的属性与方法时,默认转换成Object类型 console.log(str1.length); console.log(str2.length); //lenght是只读属性 //根据各国字符计算长度 var str3 = "凯哥是个好男人"; console.log(str3); console.log(str3.length);

三、字符串中的常用功能(方法)

  • 获取指定下标的字符,下标从0开始

    var str1 = "sunck凯 is a good man"; console.log(str1.charAt(2)); console.log(str1.charAt(5));
  • 获取指定下标的字符的ASCII码(Unicode),返回值为0~65535之间的整数

    var str2 = "sunck凯 is a good man"; console.log(str2.charCodeAt(2)); console.log(str2.charCodeAt(5));

    ASCII码:ASCII (美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符

1.jpg

  • 将ASCII码转换成对应的字符

    var str3 = String.fromCharCode(97); console.log(str3);

    对象方法:对象名.XXX()

    类方法:引用类型名.XXX()

  • 字符串大小写转换,返回转换后的结果字符串

    var str4 = "SUNCK is a GooD Man!"; //将字符串中所有的大写字符转换成小写字符,小写字符不变 var ret4_1 = str4.toLowerCase(); //将字符串中所有的小写字符转换成大写字符,大写字符保持不变 var ret4_2 = str4.toUpperCase(); //不会改变字符串本身,以返回值的形式返回结果 console.log("str4 = " + str4); console.log("ret4_1 = " + ret4_1); console.log("ret4_2 = " + ret4_2);
  • 字符串比较大小

    规则:从左至右依次对比相同下标处的字符,当两个字符不相等时,哪个字符的ASCII值大,那么字符串就大

    函数结果:返回值为1,左边大于右边,返回值为-1,右边大于左边,返回值为0则相等

    var str5_1 = "za"; var str5_2 = "gbc"; var flag5 = str5_1.localeCompare(str5_2); console.log("flag5 = " + flag5); if (flag5 > 0) { console.log("str5_1 > str5_2"); } else if (flag5 < 0) { console.log("str5_1 < str5_2"); } else { console.log("str5_1 = str5_2"); }

    注意:汉字根据Unicode来算

    str6_1 = "孙常凯"; str6_2 = "太帅"; console.log(str6_1 < str6_2);
  • 查找字符串

    var str7 = "sunck is a good man! sunck is a nice man";

    正向查找,返回第一次出现字符串的首下标

    var ret7_1 = str7.indexOf("sunck"); console.log("ret7_1 = " + ret7_1);

    反向查找,返回第一次出现字符串的首下标

    var ret7_2 = str7.lastIndexOf("sunck"); console.log("ret7_2 = " + ret7_2);
  • 替换子串

    方法:replace(被替换的子串, 新子串)

    注意:此时只能替换第一次出现的子串,如果想全替换需要正则

    var str8 = "sunck is a good good man!"; var ret8 = str8.replace("good", "handsome"); console.log("str8 = " + str8); console.log("ret8 = " + ret8);
  • 提取子串

    var str9 = "sunck is a good good man!";

    从指定的下标截取到字符串结束,返回新字符串,新字符串是由被截取到的字符组成的

    console.log(str9.substring(3));

    从参数1下标出开始截取到参数2下标之前(注意不包含参数2下标出的字符)

    console.log(str9.substring(3,7));

    从指定的下标截取到字符串结束,返回新字符串,新字符串是由被截取到的字符组成的

    console.log(str9.substr(3));

    从参数1下标出开始截取参数2长度的字符串

    console.log(str9.substr(3,7));
  • 字符串分割

    var str10 = "sunck is a good man"; var arr10 = str10.split(' '); console.log(arr10);
需要 登录 才可以提问哦