JavaScript标准库- String对象

- string作为构造函数时用来生成字符串对象
	let str01 = 'xiaoyu';
    let str02 = new String('xiaoyu');
    typeof str01; //'string'
    typeof str02; // 'object'
    str02.valueOf(); //'xiaoyu'
	str02[0]; // 'x' 字符串对象是一个类似数组的对象(很像数组,但不是数组),有数值键和length属性,可以像数组一样取值
 

- string作为工具方法时,将任意类型的值转为字符串
	String(true); // 'true' 
	

静态方法

- 静态方法:即定义在对象本身,而不是定义在对象实例的方法
- String对象提供的静态方法主要是String.fromCharCode():该方法的参数是一个或多个数值,代表 Unicode 码点,返回值是这些码点组成的字符串

	String.fromCharCode(); // ''
	String.fromCharCode(104); // 'h'
	// 传入的参数不能大于0xFFFF(即十进制的 65535)

实例属性

- String.prototype.length:返回字符串的长度
	let str = 'xiaoyu';
	str.length; // 6

实例方法

- String.prototype.charAt(): 返回指定位置的字符
	let str = new String('zhongxiaoyu');
	let str1 = 'zhongxiaoyu';
    str.charAt(2); // 'o'
    str1.charAt(2); // 'o'
	str.charAt(str.length - 1); // 'u'
	str[2]; // 'o' 可以用数组的下标来替换

- String.prototype.charCodeAt():返回字符串指定位置的Unicode码点,相当于String.fromCharCode()的逆操作。
	
	'xiaoyu'.charCodeAt(1)// 105 1号位置是i,i的Unicode码点是105
    'xiaoyu'.charCodeAt(); //120 如果没有任何参数 返回首字符的Unicode码点
	'xiaoyu'.charCodeAt(-1);// NaN 如果参数为负数或大于字符串的长度,返回NaN
	'xiaoyu'.charCodeAt(6);// NaN
	
- String.prototype.concat():连接两个字符串,返回一个新字符串,不改变原字符串
	let str0 = '中小鱼';
    let str1 = '要成小鱼干了';
	let str2 = '小余 == 小鱼';
    str0.concat(str1); // '中小鱼要成小鱼干了'
	str0.concat(str1,str2);// '中小鱼要成小鱼干了,小余 == 小鱼' 可以接受多个参数
	let str3 = 18;
	''.concat(str3); // '18' 如果参数不是字符串,concat方法会将其先转为字符串再拼接
	// 有一个运算数是字符串 concat等同于加号运算符

- String.prototype.slice(): 从原字符串取出子字符串并返回,不改变原字符串。
	
    * 第一个参数是子字符串的开始位置
	* 第二个参数是子字符中的结束位置(不含该位置)
	* 如果省略第二个参数,表示子字符串一直到原字符串的结束
	* 如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度
	 '小鱼要成小鱼干了'.slice(-4); // '小鱼干了'
	 '小鱼要成小鱼干了'.slice(-4, -2); // '小鱼'
	 '小鱼要成小鱼干了'.slice(-4, 1); // ''
	* 正数的情况下,第一个参数大于第二个参数,返回空字符串
		'小鱼要成小鱼干了'.slice(4, 1); // ''
		
- String.prototype.substring():用于从原字符串取出子字符串并返回,不改变原字符串,跟slice方法很相像
	
    * 第一个参数:表示子字符串的开始位置
	* 第二个参数:表示结束位置(不包含该位置)
	 '小鱼要成小鱼干了'.substring(0,2);  // '小鱼'
	* 省略第二个参数表示子字符串一直到原字符串的结束
	 '小鱼要成小鱼干了'.substring(4); // '小鱼干了' 
	* 第一个参数大于第二个参数,substring方法会自动更换两个参数的位置
	  '小鱼要成小鱼干了'.substring(4, 2); // '要成'
	* 如果参数是负数,substring方法会自动将负数转为0
		'小鱼要成小鱼干了'.substring(1,-2); // '小' 先把-2转换为0,然后再互换位置
	// 由于这些规则违反直觉,因此不建议使用substring方法,应该优先使用slice

- String.prototype.substr():用于从原字符串取出子字符串并返回,不改变原字符串,跟slice和substring方法的作用相同
	
    * 第一个参数表示子字符串的开始位置,第二个参数是子字符串的长度
		'小鱼要成小鱼干了'.substr(0,2);//'小鱼'
	* 如果省略第二个参数,则表示子字符串一直到原字符串的结束
		'小鱼要成小鱼干了'.substr(2); // '要成小鱼干了'
	* 如果第一个参数是负数,表示倒数计算的字符位置
		'小鱼要成小鱼干了'.substr(-4); // '小鱼干了'
	* 如果第二个参数是负数,将被自动转为0,因此会返回空字符串
        '小鱼要成小鱼干了'.substr(4, -1); // ''

- String.prototype.indexOf():方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配
	
	'小鱼要成小鱼干了'.indexOf('小鱼'); // 0
	* indeOf方法还可以接受第二个参数,表示从该位置开始向后匹配
	'小鱼要成小鱼干了'.indexOf('小鱼', 2); // 4
	

- String.prototype.lastIndexOf(): 用法跟indexOf方法一致,主要的区别是lastIndexOf从尾部开始匹配,indexOf则是从头部开始匹配
	 '小鱼要成小鱼干了'.lastIndexOf('小鱼'); // 4
	//第二个参数表示从该位置开始向前匹配
	'小鱼要成小鱼干了'.lastIndexOf('小鱼', 2); // 0


- String.prototype.trim(): 用于去除字符串两端的空格,返回一个新字符串,不改变原字符串
	// 该方法去除的不仅是空格,还包括制表符(\t、\v)、换行符(\n)和回车符(\r)
		' 小鱼要成 小鱼干了 '.trim(); // '小鱼要成 小鱼干了'

- String.prototype.toLowerCase(): 用于将字符串全部转为小写
String.prototype.toUpperCase():用于将字符串全部转为大写
	// 它们都返回一个新字符串,不改变原字符串
		'zhongxiaoyu'.toUpperCase(); // 'ZHONGXIAOYU'



- String.prototype.match(): 用于确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配则返回null.可以使用正则表达式作为参数
	
	'一勤天下无难事'.match('事'); //[ '事', index: 6, input: '一勤天下无难事', groups: undefined ] 返回的数组还有index属性和input属性,分别表示匹配字符串开始的位置和原始字符串

- String.prototype.search():用法基本等同于match,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1,可以使用正则表达式作为参数 
	String.prototype.replace(): 用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰的正则表达式) ,可以使用正则表达式作为参数
    '唐门外门弟子唐三'.search('唐'); // 0 
	'唐门外门弟子唐三'.replace('唐','中'); // '中门外门弟子唐三'
	
- String.prototype.split(): 按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组,可以使用正则表达式作为参数
    let str = '中小鱼,是好多余的鱼';
    str.split(','); // [ '中小鱼', '是好多余的鱼' ]

	// 如果省略参数,则返回数组的唯一成员就是原字符串
    str.split();  // [ '中小鱼,是好多余的鱼' ]
	
	//如果分割规则为空字符串,则返回数组的成员是原字符串的每一个字符
    str.split('');	/* '中', '小', '鱼', ',', '是', '好',  '多', '余', '的', '鱼' ]*/
    '中小鱼,,是好多余的鱼'.split(',');
	
	// 如果满足分割规则的两个部分紧邻着(即两个分割符中间没有其他字符),则返回数组之中会有一个空字符串。
	'中小鱼,,是好多余的鱼'.split(',');// [ '中小鱼', '', '是好多余的鱼' ]

	// 足分割规则的部分处于字符串的开头或结尾,则返回数组的第一个或最后一个成员是一个空字符串
	let str1 = '中小鱼是好多余的鱼';
    str1.split('鱼');// [ '中小', '是好多余的', '' ]
    let str2 = '鱼是好多鱼的鱼.';
    str2.split('鱼'); // [ '', '是好多余的', '.' ]

	// split方法还可以接受第二个参数,限定返回数组的最大成员数。
	let str2 = '鱼是好多余的鱼.';
	str2.split('鱼',2); // [ '', '是好多余的' ]  

- String.prototype.localeCompare():用于比较两个字符串(采用Unicode码点比较)
	* 第一个字符串  >  第二个字符串 ,返回的结果大于0* 第一个字符串 < 第二个字符串,返回的结果小于0* 第一个字符串 == 第二个字符串,返回0
	
	let str1 = '中小鱼好多余';
	let str2 = '中小鱼是好多余的鱼';
	str1.localeCompare(str2);//  -1
	
	let str1 = '中小鱼是好多余的鱼';
	let str2 = '中小鱼是好多余的鱼';
	str1.localeCompare(str2); //  0 
		// localeCompare方法最大的特点,就是会考虑自然语言的顺序
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中小余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值