ES6学习笔记(五):基本引用类型3:字符串与string

1.字符串

字符串字面量

单引号和双引号都可以表示字符串字面量,但需要注意的一点的是在HTML中使用双引号,js中使用单引号以避免混淆,在JSON中,必须使用双引号。

{
	'hello,world';
	"Hello,world";
}

关于字符串的访问,可以有两种方式,字符串相当于是一个不可变的序列,因此可以通过索引来访问。

{
	'hello'.charAt(1); // 字符串方法charAt,获取指定位置的字符
	'hello'[1]; // 相当于按数组索引的方式来获取,结果为e
}

转换为字符串

结果
undefined‘undefined’
null‘null’
布尔值false为’false’,true为’true’
数字直接转换,例如3.14为’3.14’
字符串就是自己,没什么好转的
对象调用ToPrimitive(vaalue,string)将原始值结果转为字符串

手动转为字符串,有3种常见的方式将值转换为字符串

{
	String(value); // String是一个方法,不是构造函数
	''+value; // 相当于拼接
	value.toString(); // 直接调用toString方法,对undefined和null不生效
}

字符串的拼接

拼接字符串通常有两种方法,一是直接用加号运算符合并,只要有一个是字符串那么就能完成拼接。第二种是拼接字符串数组,将所有的字符串添加进一个数组然后调用join方法将他们拼接起来。

{
	let str = 'Java';
	str += 'Script' // 结果为 JavaScript

	// 第二种方式
	let arr = [];
	arr.push('Java');
	arr.push('Script');
	arr.join('');  // 结果为 JavaScript
}

2.字符串函数string

可以通过两种方式调用String方法

作为常规函数,将参数value转换为原始字符串值

{
	String(100) // 100
    let x; String(x) // undefined
    let x=null; String(x) // null
    String({value:100}) // [object Object]
    String({value:100, toString: function(){ return this.value; }}) // 调用toString方法获得对象的原始值 100
}

作为构造函数,会创建一个String对象的实例

{
	typeof String(x) // 普通函数返回的是 string
	typeof new String('abc') // 构造函数返回 object
}

字符串的常用方法,字符串原始值的所有方法都是在prototype上的也就是String.prototype

{
	// 字符串方法
    let str = 'JavaScript';
    console.log(str.length); // 字符串的属性,表示字符串中字符的个数,10
    console.log(str.charAt(1)); // 返回给定位置的字符,a
    console.log(str.charCodeAt(1)); // 返回给定位置字符的ASCII码值,97
    // Java 返回一个子字符串,从第一个参数开始到第二个参数为止,不包括第二个参数,两个参数都可以为负数
    console.log(str.slice(0,4)); 
    console.log(str.substr(0,6)); // JavaSc 第一个参数为开始位置,第二个为截取长度,返回截取的字符串
    console.log(str.substring(2,4)); // va 功能与slice相同
    console.log(str.split('')); // 原字符串会被空字符分割并组成一个数组返回
    console.log(str.concat('!!')); // 会拼接指定参数的字符返回
    console.log(str.indexOf('a',2)); // 返回第一个参数字符的索引,第二个参数为从第二个参数的起始位置开始查询,如果没找到返回-1
    console.log(str.toUpperCase()); // 转为全大写字母
    console.log(str.toLowerCase()); // 转为全小写字母
}

更多方法可以随时查阅文档,String方法

关于字符串处理的一个应用,电话号码的模糊处理

{
    // 电话号码模糊处理
    function phone(mobile,len=8){
        return String(mobile).slice(0,len * -1) + '*'.repeat(len)
    }
    console.log(phone(15198211803)); // 输出151********
}

第一个参数是传入的手机号码,第二个参数是需要模糊处理的位数,可以有一个默认值,函数里面返回的是先把传入的手机号码转为字符串,然后调用slice函数切割给定长度的位数,然后再拼接*号,把指定位数的号码拼接为 *号。

3.ES6中字符串的扩展

ES6中扩展的一部分字符串方法

方法名功能
charCodeAt(index)返回指定字符的Unicode编码
startsWith(value)返回布尔值,判断是否以给定字符串开头
endsWith(value)返回布尔值,判断是否以给地字符串结尾
includes(value,position)返回布尔值,判断一个字符串是否包含另一个字符串,第二个参数为从指定索引开始搜索
padStart(targetLength [, padString)用另一个字符串填充当前字符串,从头部开始,总长度为第一个参数
padEnd(targetLength [, padString])用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充

ES6中的模板字符串

{
	// 没有模板字符串的拼接
    let str = 'Java';
    let str2 = 'Script'
    console.log(str + str2 + '!!'); // 输出 JavaScript!!
    // 使用模板字符串的拼接
    console.log(`${str}${str2}!!`); // 一样输出 JavaScript!!
}

模板字符串使用反引号``括起来模板字符串可以在中间使用变量或者表达式插值,这样就更方便的进行操作,并且可以实现换行,而普通的字符串换行就会报错。

模板字符串的简单应用

{
	let arr = ['张三','李四','赵云','刘备']
    let html = '';
    for(let index in arr){
        html += `<div>${arr[index]}</div>`
        console.log(arr[index]);
    }
    document.body.innerHTML = html;
}

效果如下:
效果如下
使用for in 循环方法去获取数组的索引,然后通过索引获得数组里面的值,再通过模板字符串放入div标签中,这样就可以在网页中生成需要的页面了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值