本文是 重温基本 系列文章的第八篇。
本日感觉:人在他乡,也不能遗忘汤圆。
系列目次:
- 【温习材料】ES6/ES7/ES8/ES9材料整顿(个人整顿)
- 【重温基本】1.语法和数据类型
- 【重温基本】2.流程掌握和错误处置惩罚
- 【重温基本】3.轮回和迭代
- 【重温基本】4.函数
- 【重温基本】5.表达式和运算符
- 【重温基本】6.数字
- 【重温基本】7.时候对象
本章节温习的是JS中的字符串,另有字符串的相干属性和要领。
前置学问:
JavaScript中的字符串的每一个元素,在字符串中都占有一个位置,第一个元素的索引值为0,今后累加,别的建立字符串有2个要领:
- 1.字面量建立:
let a = 'hello'; // "hello"
typeof a; // "string"
- 2.字符串对象建立:
let a = new String('hello'); //String {"hello"}
typeof a; // "object"
现实开辟中,除非必要,发起运用字面量建立,由于两种建立要领会有差别:
let a1 = "1+1";
let a2 = new String("1+1");
eval(a1); // number 2
eval(a2); // string "1+1"
String有一个length
属性,示意字符串中字符个数:
let a = "hello";
a.length; // 5
1.String对象要领:
String对象的要领异常多,发起人人能够到 W3school JavaScript String 对象 进修完全的内容。
要领 | 形貌 |
---|---|
charAt , charCodeAt , codePointAt | 返回字符串指定位置的字符或许字符编码。 |
indexOf , lastIndexOf | 离别返回字符串中指定子串的位置或末了位置。 |
startsWith , endsWith , includes | 返回字符串是不是以指定字符串最先、完毕或包括指定字符串。 |
concat | 衔接两个字符串并返回新的字符串。 |
fromCharCode , fromCodePoint | 从指定的Unicode值序列组织一个字符串。这是一个String类要领,不是实例要领。 |
split | 经由过程将字符串星散成一个个子串来把一个String对象分裂到一个字符串数组中。 |
slice | 从一个字符串提取片段并作为新字符串返回。 |
substring , substr | 离别经由过程指定肇端和完毕位置,肇端位置和长度来返回字符串的指定子集。 |
match , replace , search | 经由过程正则表达式来事情. |
toLowerCase , toUpperCase | 离别返回字符串的小写示意和大写示意。 |
normalize | 根据指定的一种 Unicode 正规情势将当前字符串正规化。 |
repeat | 将字符串内容反复指定次数后返回。 |
trim | 去掉字符串开首和末端的空缺字符。 |
1.1 charAt
作用:查找字符串中指定位置的内容。 str.charAt(index)
index : 查找的字符的下标(大于即是0,若小于0则返回空字符串),若没传则示意1。
let a = "hello leo!"
a.charAt(); // "h"
a.charAt(1); // "e"
a.charAt(-1);// ""
1.2.indexOf和lastIndexOf
作用:查找指定字符串的位置。 indexOf
和lastIndexOf
相同点:
二者吸收的参数一致,没有查到内容,返回-1
。 indexOf
和lastIndexOf
不同点:
若查找到内容,则indexOf
返回第一次涌现的索引而lastIndexOf
返回末了一次涌现的索引。
str.indexOf(value[, fromIndex])
吸收2个参数:
-
value
: 须要查找的字符串内容; -
fromIndex
: 可选,最先查找的位置,默许0;
let a = 'hello leo';
let b = a.indexOf('lo'); // 3
let c = a.indexOf('lo',4);// -1
let e = a.lastIndexOf('l'); // 6
肯定要注意:
- 当
fromIndex > a.length
,则fromIndex
被视为a.length
。
let a = 'hello leo';
let b = a.indexOf('lo',99);// -1
- 当
fromIndex < 0
,则fromIndex
被视为0
。
let a = 'hello leo';
let b = a.indexOf('lo',-1);// 3
-
indexOf
和lastIndexOf
辨别大小写。
let a = 'hello leo';
let b = a.indexOf('Lo'); // -1
1.3 concat
作用:衔接字符串。 concat()
吸收恣意个参数作为衔接的字符串,返回一个兼并后的新字符串。
let a = 'hello';
let b = ' leo ';
let c = '!'
a.concat(b,c); // "hello leo !"
1.4 split
作用:把字符串支解为字符串数组,并能够指定分隔符。 split(separator[,limit])
能够吸收2个参数:
-
separator
:必须,字符串或许正则表达式,作为支解的内容; -
limit
:可选,作为指定返回的数组的最大长度;
若separator
为""
,则字符串会在每一个字符之间支解;
let a = 'How are you doing today?';
a.split();
// ["How are you doing today?"]
a.split("");
// ["H", "o", "w", " ", "a", "r", "e", " ", "y", "o", "u", " ", "d", "o", "i", "n", "g", " ", "t", "o", "d", "a", "y", "?"]
a.split(" ");
// ["How", "are", "you", "doing", "today?"]
a.split("",4);
// ["H", "o", "w", " "]
a.split(" ",4);
// ["How", "are", "you", "doing"]
运用其他支解标记:
let a = "ni,hao,a!";
a.split(","); // ["ni", "hao", "a!"]
1.5 slice
作用:提取并返回字符串的片段。 slice([start,end])
能够吸收2个参数:
-
start
:要提取的片段的肇端下标,若小于零,则从字符串尾部最先算起,如-1示意字符串末了一个字符,-2为倒数第二个字符等等。 -
end
:要提取的片段的完毕下标,若没有传入,则示意从start到字符串末端,若为负数则从字符串尾部最先算起。
let a = 'How are you doing today?';
a.slice(); // "How are you doing today?"
a.slice(1); // "ow are you doing today?"
a.slice(-1); // '?'
a.slice(1,5); // "ow a"
a.slice(1,-1); // "ow are you doing today"
a.slice(-2,-1); // "y"
2.字符串拓展(ES6)
2.1 includes(),startsWith(),endsWith()
在我们推断字符串是不是包括另一个字符串时,ES6之前,我们只要typeof
要领,ES6以后我们又多了三种要领:
- includes():返回布尔值,示意是不是找到参数字符串。
- startsWith():返回布尔值,示意参数字符串是不是在原字符串的头部。
- endsWith():返回布尔值,示意参数字符串是不是在原字符串的尾部。
let a = 'hello leo';
a.startsWith('leo'); // false
a.endsWith('o'); // true
a.includes('lo'); // true
而且这三个要领都支撑第二个参数,示意肇端搜刮的位置。
let a = 'hello leo';
a.startsWith('leo',1); // false
a.endsWith('o',5); // true
a.includes('lo',6); // false
endsWith
是针对前 n
个字符,而其他两个是针对从第n
个位置直到完毕。
2.2 repeat()
repeat
要领返回一个新字符串,示意将原字符串反复n
次。
基本用法:
'ab'.repeat(3); // 'ababab'
'ab'.repeat(0); // ''
特别用法:
- 参数为
小数
,则取整
'ab'.repeat(2.3); // 'abab'
- 参数为
负数
或Infinity
,则报错
'ab'.repeat(-1); // RangeError
'ab'.repeat(Infinity); // RangeError
- 参数为
0到-1的小数
或NaN
,则取0
'ab'.repeat(-0.5); // ''
'ab'.repeat(NaN); // ''
- 参数为
字符串
,则转成数字
'ab'.repeat('ab'); // ''
'ab'.repeat('3'); // 'ababab'
2.3 padStart(),padEnd()
用于将字符串头部或尾部补全长度,padStart()
为头部补全,padEnd()
为尾部补全。
这两个要领吸收2个参数,第一个指定字符串最小长度,第二个用于补全的字符串。
基本用法 :
'x'.padStart(5, 'ab'); // 'ababx'
'x'.padEnd(5, 'ab'); // 'xabab'
特别用法:
- 原字符串长度,大于或即是指定最小长度,则返回原字符串。
'xyzabc'.padStart(5, 'ab'); // 'xyzabc'
- 用来补全的字符串长度和原字符串长度之和,凌驾指定最小长度,则截去超越部份的补全字符串。
'ab'.padStart(5,'012345'); // "012ab"
- 省略第二个参数,则用
空格
补全。
'x'.padStart(4); // ' x'
'x'.padEnd(4); // 'x '
2.4 模版字符串
用于拼接字符串,ES6之前:
let a = 'abc' +
'def' +
'ghi';
ES6以后:
let a = `
abc
def
ghi
`
拼接变量:
在反引号(`)中运用${}
包裹变量或要领。
// ES6之前
let a = 'abc' + v1 + 'def';
// ES6以后
let a = `abc${v1}def`
3.字符串拓展(ES7)
用来为字符串添补特定字符串,而且都有两个参数:字符串目的长度和添补字段,第二个参数可选,默许空格。
'es8'.padStart(2); // 'es8'
'es8'.padStart(5); // ' es8'
'es8'.padStart(6, 'woof'); // 'wooes8'
'es8'.padStart(14, 'wow'); // 'wowwowwowwoes8'
'es8'.padStart(7, '0'); // '0000es8'
'es8'.padEnd(2); // 'es8'
'es8'.padEnd(5); // 'es8 '
'es8'.padEnd(6, 'woof'); // 'es8woo'
'es8'.padEnd(14, 'wow'); // 'es8wowwowwowwo'
'es8'.padEnd(7, '6'); // 'es86666'
从上面效果来看,添补函数只要在字符长度小于目的长度时才有用,若字符长度已即是或小于目的长度时,添补字符不会起作用,而且目的长度假如小于字符串自身长度时,字符串也不会做截断处置惩罚,只会原样输出。
参考材料
本部份内容到这完毕
Author | 王安然 |
---|---|
pingan8787@qq.com | |
博 客 | www.pingan8787.com |
微 信 | pingan8787 |
逐日文章引荐 | https://github.com/pingan8787… |
JS小册 | js.pingan8787.com |
迎接关注微信民众号【前端自习课】天天清晨,与您一同进修一篇优异的前端手艺博文 .