Vue进阶(五⼗⼋):ES字符串操作:遍历、⽐较、截取、补全...
⽂章⽬录
⼀、字符串遍历器接⼝
let text = String.fromCodePoint(0x20BB7);
for(let i =0; i < text.length; i++){
console.log(text[i]);
}
// " "
// " "
for(let i of text){
console.log(i);
}
上⾯代码中,字符串text只有⼀个字符,但是for循环会认为它包含两个字符(都不可打印),⽽f循环会正确识别出这⼀个字符。codePointAt⽅法是测试⼀个字符由两个字节还是由四个字节组成的最简单⽅法。
function is32Bit(c){
dePointAt(0)>0xFFFF;
}
is32Bit("?")// true
is32Bit("a")// false
⼆、字符串合成⽐较法 normalize()
'\u01D1'==='\u004F\u030C'//false
'\u01D1'.length // 1
'\u004F\u030C'.length // 2
上⾯代码表⽰,JavaScript 将合成字符视为两个字符,导致两种表⽰⽅法不相等。
ES6 提供字符串实例的normalize()⽅法,⽤来将字符的不同表⽰⽅法统⼀为同样的形式,这称为 Unicode 正规化。
'\u01D1'.normalize()==='\u004F\u030C'.normalize()
// true
三、判断字符串是否包含另⼀个字符串
let s ='Hello world!';
s.startsWith('Hello')// true
s.includes('o')// true
这三个⽅法都⽀持第⼆个参数,表⽰开始搜索的位置。
let s ='Hello world!';
s.startsWith('world',6)// true
s.includes('Hello',6)// false
上⾯代码表⽰,使⽤第⼆个参数n时,endsWith的⾏为与其他两个⽅法有所不同。它针对前n个字符,⽽其他两个⽅法针对从第n个位置直到字符串结束。
四、字符串重复
repeat⽅法返回⼀个新字符串,表⽰将原字符串重复n次。
'x'.repeat(3)// "xxx"
'hello'.repeat(2)// "hellohello"
'na'.repeat(0)// ""
五、字符串补全
如果某个字符串不够指定长度,会在头部或尾部补全。padStart()⽤于头部补全,padEnd()⽤于尾部补全。
如果⽤来补全的字符串与原字符串,两者的长度之和超过了指定的最⼩长度,则会截去超出位数的补全字符串。
'abc'.padStart(10,'0123456789')
// '0123456abc'
padStart常见⽤途是为数值补全指定位数。下⾯代码⽣成 10 位数值字符串。
'1'.padStart(10,'0')// "0000000001"
'12'.padStart(10,'0')// "0000000012"
'123456'.padStart(10,'0')// "0000123456"
另⼀个⽤途是提⽰字符串格式。
'12'.padStart(10,'YYYY-MM-DD')// "YYYY-MM-12"
'09-12'.padStart(10,'YYYY-MM-DD')// "YYYY-09-12"
六、字符串截取
6.1 substring()
substring(start,end)
⽤法:
1. substring(start,end) ⽤数学表达式表达区间的话就是截取[start,end);substring和slice
2. substring(start) 没有end相当于[start,最后⼀个字符];
let str ='Hello world';
let use1 = str.substring(0,3);
console.log(use1);// Hel
let use2 = str.substring(3,0);
console.log(use2);// hel
let use3 = str.substring(2);
console.log(use3);// llo world
6.2 slice()
slice(start,end)
slice⽤法和substring的⽤法基本⼀样,只是区别在于:
1. slice(start,end) -> start不能⼤于end,否则返回空字符串;
2. slice可以接受参数是负数,如果是负数的话,规则将按照:字符串的长度和赋值相加,替换掉这个值。举例如下:
let str ='abcdefg'// length = 7
str.slice(1,-4)// bc  -> str.slice(1,7-4) -> str.slice(1,3)
七、截取指定位置和指定长度的字符串
substr(start,length)
⽤法:
1. substr(start,length) -> 截取的字符串区间为:[start,start+length)->从start开始,算上start数length个字符串;
2. substr(start) -> 截取的字符串区间为:[start,最后⼀个字符]
let str ='Hello world';
console.log(str.substr(1,2))// el
console.log(str.substr(3))// lo world
indexOf(char,index) 和 lastIndexOf(char,index)
indexOf是从左往右搜索,⽽lastIndexOf是从右往左搜索; 它们的返回值都是搜到char所在的位置序号,如果没搜到,返回-1;如果index为负数,那么在indexOf和lastIndexOf中,-1代表最后⼀个字符。
char:为要查的那个字符;
index:是从哪个字符的位置序号开始(没有则在indexOf中是最左边的字符,在lastIndexOf中是最右边的字符);
let str ='good';
console.log(str.indexOf('o'));// 1
console.log(str.lastIndexOf('o'));// 2
charAt(index) 和 charCodeAt(index) 和at(index) (es6属性)
charAt(index)返回index位置的字符;
charCodeAt(index)返回index位置的字符Unicode码;
charAt(index)不能识别⼤于0xFFFF的字符,这时候可以⽤at()来识别;
var str ='abc'
str.charAt(0)// a
str.charCodeAt(0)// 97
⼋、数组转字符串
datas.join(',')//变成字符串后,以逗号分隔
九、字符串转数组
data.split(',')//字符串按逗号分隔成数组
⼗、拓展阅读
《》
《》

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。