JS从零开始(17)

119 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情

字符串切片(续)

substring()

这个也能传两个参数,和slice()方法很类似,但是也有区别,区别就在于substring()不如slice()灵活,比如slice()中可以接受负数作为参数,而substring()不能接受负数;另一个是该方法可以自动的调整参数位置,比如:

var str = 'abcdefghijk';
console.log(str.substring(6, 3));//def
console.log(str.substring(3, 6));//def

你会发现这两个的打印结果是完全一样的,并不像console.log(str.slice(6, 3));//空字符串一样打印空字符串,事实上该方法会依照参数递增顺序把小的参数放在前面,大的参数放在后面。

ps:可能有人会发现console.log(str.substring(3, -6));//abc也能打印字符串,实际上当我们传递的参数为负数时,代码会默认负数为0,因而就相当于console.log(str.substring(0, 3));//abc

substr()

这个方法乍一看好像跟上面的方法差不多,但是他们的参数意义大不相同,我们使用substr()方法的时候,同样也是传两个参数,不过第二个参数的意义并不是结束的索引,而是想要截取内容的长度,比如:

var str = 'abcdefghijk';
console.log(str.substr(3, 3));//def
console.log(str.substr(3, 6));//defghi

很明显能看到console.log(str.substr(3, 6));//defghi打印的是defghi而非def,这就是其跟slice()的区别,但是由于ECMAscript中没有对其进行标准化,所以通常不建议使用此方法,仅作了解

其他方法

方法解释说明
String.fromCharCode()通过字符的Unicode编码访问字符
concat()连接字符串(了解)
split()将字符串转换为数组(重要)
replace()替换字符串中指定内容
repeat()重复(克隆)字符串
trim()去除字符串首尾的空格

String.fromCharCode()

这个方法需要我们传递字符的Unicode编码,如:

var str = 'abcdefghijk';
console.log(str.charCodeAt(5));//102
console.log(String.fromCharCode(102));//f

但是要注意的是,charCodeAt()方法传递的参数是索引值,功能是查看字符的Unicode编码,而String.fromCharCode()传递的参数是Unicode编码,功能是通过Unicode编码来获取字符,两者刚好相反。