字符串的创建和常用方法
JS定义字符串(三种方式)==> 其中有一种是引用类型(object)
在Javascript中,定义字符串有以下3种方式。
字面量创建字符串
使用双引号或单引号包含任意长度的文本。
实例1
任何被引号包含的文本都被称为字符串类型数据
let a = 'true';//把布尔值转化为字符串
let b = '123'; //把数值型转换为字符串
let c = '[1,2,3]'; //把数组转换为字符串
let d = '{x: 1,y: 2}'; //把对象转换为字符串
实例2
单引号和双引号可以配合使用,定义特殊形式的字符串。
let s = 'console.log("Hello,World")';
单引号可以包含双引号,或者双引号包含单引号。但是,不能够在单引号中包含单引号,或者双引号中包含双引号。
实例3
由于一些字符包含多重语义,在字符串中需要转义表示,避免产生歧义,转义字符的基本方法:在字符前面加反斜杠。
let y = '''; // ' 有效的引号字符
构造字符串
使用String() 类型函数可以构造字符串,该函数可以接收一个参数,并把它作为值来初始化字符串。
实例1
下面使用new运算符调用String()构造函数创建一个字符串型对象。
let a = new String(); //创建一个空字符串对象,并赋值给变量a
a = new String('我是构造字符串'); //初始化之后赋值给变量a
通过String构造函数,构造的字符串与字面量创建的字符串的类型是不同的,前置为引用型(引用类型)对象,后者为值类型(基本数据类型)字符串
实例2
下面代码比较了构造字符串和字面量创建的字符串类型的不同。
let a1 = new String(1); //构造字符串
let a2 = '1'; //字面量创建字符串
console.log(typeof a1); //返回object,说明是引用型对象
console.log(typeof a2); //返回string,说明是值类型(基本数据类型)字符串
实例3
String() 也可以作为普通函数使用,把参数转换为字符串类型的值返回。
let a = String(123); //包装字符串
console.log(a); //返回字符串“123”
console.log(typeof a); //返回string,说明是简单的值
实例4
String()允许传入多个参数,但是仅处理第一个参数,并把它转换为字符串返回
let a = String(1,2,3,4); //带多个参数
console.log(a); //返回字符串"1"
console.log(typeof a) //返回string,数值被转换为字符串
但是,所有参数表达式都会被JavaScript计算。
实例5
下面变量a在构造函数内经过多次计算之后,最后值递增为5。
let a = 1; //初始化变量
let str = new String(++a, ++a, ++a, ++a);
console.log(str); //返回2,因为仅处理第一个参数
console.log(a); //返回5
console.log(typeof str); //返回object,说明是引用类型对象
console.log(typeof a); //返回number,说明是数值类型
字符串常用的方法
toLowerCase()——把字符串转为小写,返回新的字符串
let str = 'LSFAFads';
console.log(str.toLowerCase()); //lsfafads 返回的是新字符串
toUpperCase()——把字符串转为大写,返回新的字符串
let str = 'asdaFAS';
console.log(str.toUpperCase()); //ASDAFAS 返回的是新字符串
substring(start,end)——提取字符串中介于两个指定下标之间的字符,包含起始下标位置的字符,但是不包含终止下标位置的字符,返回提取的字符串,不改变原字符串。注意:start和end两个参数必须要写,如果只写一个参数,没有效果。
let str = 'lsfafads';
console.log(str.substring(0,5)); //lsfaf 返回提取的字符串,包含起始位置,不包含终止下标位置
console.log(str); //lsfafads 原字符串不发生改变
indexOf()——返回某个指定的字符串在字符串中第一次出现索引位置,如果没有查找到则返回-1,如果找到就返回索引位置。——后期主要的应用场景:模糊查询——搜索
let str = 'lsfafads';
console.log(str.indexOf('f')); //2 找到返回该元素的索引位置,且返回的是第一次出现的索引位置
console.log(str.indexOf('c')); //-1 没有找到返回-1
substr(start,length)——返回从指定下标开始指定长度的字符串,如果没有写length长度,则默认从指定下标开始到结束位置
let str = 'lsfafads';
console.log(str.substr(1,5)); //sfafa 返回从下标为1的元素开始,返回5个元素(包含开始的元素)
console.log(str.substr(1)); //sfafads 返回从下标为1的元素开始,到字符串结束位置
split()——字符串按指定的字符分割成字符串数组,返回字符串数组
let str = 'lsf@afads';
console.log(str.split('@')); //返回字符串数组
console.log(str); //不改变原字符串