Skip to content

Commit 8c87ece

Browse files
committed
新增日志(2023-10-06-【JavaScript】字符串操作完全指南、2023-10-08-【JavaScript】数组操作完全指南)
1 parent d95b5ff commit 8c87ece

File tree

2 files changed

+546
-0
lines changed

2 files changed

+546
-0
lines changed
Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
## 概述
2+
字符串操作是JavaScript编程中极其重要且频繁使用的技能。本文全面整理了字符串的属性和方法,旨在帮助开发者系统掌握相关技术。
3+
4+
## String对象属性
5+
6+
### length属性
7+
获取字符串的长度,中文字符每个汉字代表一个字符。
8+
9+
```javascript
10+
var str = 'abc';
11+
console.log(str.length); // 返回3
12+
```
13+
14+
### prototype属性
15+
用于扩展String对象的方法,所有实例共享。
16+
17+
```javascript
18+
// 添加去除两边空格的方法
19+
String.prototype.trim = function(){
20+
return this.replace(/^\s*|\s*$/g, '');
21+
}
22+
```
23+
24+
## String对象方法
25+
26+
### 一、字符获取类方法
27+
28+
#### 1. charAt(index)
29+
获取指定索引位置的字符。
30+
31+
```javascript
32+
var str = 'abcde';
33+
console.log(str.charAt(2)); // 返回 'c'
34+
console.log(str.charAt(8)); // 返回空字符串
35+
```
36+
37+
#### 2. charCodeAt(index)
38+
返回指定位置字符的Unicode编码。
39+
40+
```javascript
41+
var str = 'abcde';
42+
console.log(str.charCodeAt(0)); // 返回 97
43+
```
44+
45+
#### 3. String.fromCharCode(numX,...)
46+
静态方法,将Unicode编码转换为字符。
47+
48+
```javascript
49+
console.log(String.fromCharCode(97, 98, 99)); // 返回 'abc'
50+
```
51+
52+
### 二、查找类方法
53+
54+
#### 4. indexOf(searchvalue, fromindex)
55+
返回子字符串首次出现的位置,未找到返回-1。
56+
57+
```javascript
58+
var str = 'abcdeabcde';
59+
console.log(str.indexOf('a')); // 返回 0
60+
console.log(str.indexOf('a', 3)); // 返回 5
61+
console.log(str.indexOf('bc')); // 返回 1
62+
```
63+
64+
#### 5. lastIndexOf(searchvalue, fromindex)
65+
从后向前搜索,返回子字符串最后出现的位置。
66+
67+
```javascript
68+
var str = 'abcdeabcde';
69+
console.log(str.lastIndexOf('a')); // 返回 5
70+
console.log(str.lastIndexOf('a', 3)); // 返回 0
71+
console.log(str.lastIndexOf('bc')); // 返回 6
72+
```
73+
74+
#### 6. search(substr/regexp)
75+
检索与子字符串或正则表达式匹配的位置。
76+
77+
```javascript
78+
var str = 'abcDEF';
79+
console.log(str.search('c')); // 返回 2
80+
console.log(str.search('d')); // 返回 -1
81+
console.log(str.search(/d/i)); // 返回 3
82+
```
83+
84+
#### 7. match(substr/regexp)
85+
检索匹配的子字符串。
86+
87+
```javascript
88+
var str = '1a2b3c4d5e';
89+
// 非全局匹配
90+
console.log(str.match('b')); // 返回 ["b", index: 3, input: "1a2b3c4d5e"]
91+
// 全局匹配
92+
console.log(str.match(/\d/g)); // 返回 ["1", "2", "3", "4", "5"]
93+
```
94+
95+
### 三、截取类方法
96+
97+
#### 8. substring(start, end)
98+
截取开始到结束位置之间的字符串(参数不能为负值)。
99+
100+
```javascript
101+
var str = 'abcdefg';
102+
console.log(str.substring(1, 4)); // 返回 'bcd'
103+
console.log(str.substring(1)); // 返回 'bcdefg'
104+
console.log(str.substring(-1)); // 返回 'abcdefg'(负值视为0)
105+
```
106+
107+
#### 9. slice(start, end)
108+
与substring类似,但参数可以为负值。
109+
110+
```javascript
111+
var str = 'abcdefg';
112+
console.log(str.slice(1, 4)); // 返回 'bcd'
113+
console.log(str.slice(-3, -1)); // 返回 'ef'
114+
console.log(str.slice(1, -1)); // 返回 'bcdef'
115+
```
116+
117+
#### 10. substr(start, length)
118+
从指定位置开始截取指定长度的字符串。
119+
120+
```javascript
121+
var str = 'abcdefg';
122+
console.log(str.substr(1, 3)); // 返回 'bcd'
123+
console.log(str.substr(2)); // 返回 'cdefg'
124+
console.log(str.substr(-2, 4)); // 返回 'fg'
125+
```
126+
127+
### 四、替换与分割类方法
128+
129+
#### 11. replace(regexp/substr, replacement)
130+
字符串替换操作。
131+
132+
```javascript
133+
var str = 'abcdeabcde';
134+
// 单次替换
135+
console.log(str.replace('a', 'A')); // 返回 'Abcdeabcde'
136+
// 全局替换
137+
console.log(str.replace(/a/g, 'A')); // 返回 'AbcdeAbcde'
138+
// 正则替换(忽略大小写)
139+
console.log(str.replace(/a/gi, '$')); // 返回 '$bcde$bcde'
140+
```
141+
142+
#### 12. split(separator, howmany)
143+
将字符串分割为数组。
144+
145+
```javascript
146+
var str = 'a|b|c|d|e';
147+
console.log(str.split('|')); // 返回 ["a", "b", "c", "d", "e"]
148+
console.log(str.split('|', 3)); // 返回 ["a", "b", "c"]
149+
// 使用正则分割
150+
var str2 = 'a1b2c3d4e';
151+
console.log(str2.split(/\d/)); // 返回 ["a", "b", "c", "d", "e"]
152+
```
153+
154+
### 五、大小写转换类方法
155+
156+
#### 13. toLowerCase()
157+
转换为小写字母。
158+
159+
```javascript
160+
var str = 'JavaScript';
161+
console.log(str.toLowerCase()); // 返回 'javascript'
162+
```
163+
164+
#### 14. toUpperCase()
165+
转换为大写字母。
166+
167+
```javascript
168+
var str = 'JavaScript';
169+
console.log(str.toUpperCase()); // 返回 'JAVASCRIPT'
170+
```
171+
172+
## 常用技巧与最佳实践
173+
174+
### 1. 字符串连接
175+
```javascript
176+
// 使用模板字符串(推荐)
177+
const name = '张三';
178+
const greeting = `你好,${name}`;
179+
180+
// 使用加号操作符
181+
const fullName = '' + '';
182+
```
183+
184+
### 2. 去除空格
185+
```javascript
186+
const str = ' Hello World ';
187+
console.log(str.trim()); // 'Hello World'
188+
console.log(str.trimStart()); // 'Hello World '
189+
console.log(str.trimEnd()); // ' Hello World'
190+
```
191+
192+
### 3. 判断字符串包含
193+
```javascript
194+
const str = 'Hello World';
195+
console.log(str.includes('World')); // true
196+
console.log(str.startsWith('Hello')); // true
197+
console.log(str.endsWith('World')); // true
198+
```
199+
200+
### 4. 重复字符串
201+
```javascript
202+
console.log('abc'.repeat(3)); // 'abcabcabc'
203+
```
204+
205+
## 性能注意事项
206+
207+
1. **字符串拼接**:大量字符串拼接时,建议使用数组的join()方法替代加号操作符
208+
2. **正则表达式**:重复使用的正则表达式建议预编译,避免重复创建
209+
3. **字符串不变性**:字符串一旦创建不可更改,所有修改操作都会返回新字符串
210+
211+
## 总结
212+
213+
掌握字符串操作是JavaScript开发的基本功。建议结合实际项目多加练习,形成肌肉记忆。定期回顾本文内容,能够帮助巩固知识点,提高开发效率。

0 commit comments

Comments
 (0)