字符串基础知识
# 字符串基础知识
[TOC]
# 一、常用操作
# 1.1 查找
includes(substring, ?position)
:是否包含字符串,返回布尔值。startsWith(substring, ?position)
:是否以给定字符串开头,返回布尔值。endsWith(substring, ?position)
:是否以给定字符串结尾,返回布尔值。
let s = 'hello';
s.endsWith('lo'); // true
1
2
2
indexOf
:返回首个被发现的给定值的索引值,未发现则返回-1。lastIndexOf
:返回最后一个被发现的给定值的索引值,未发现则返回-1。
let str = 'hello';
str.indexOf('l'); // 2
str.indexOf('m'); // -1
1
2
3
2
3
# 1.2 获取
substring
、substr
、与slice
- 获取子字符串,结束位置那一位不会获取到
方法 参数 返回值 slice(start, end) start(必需) -起始位置;end(可选)-结束位置,若未指定,则默认到末尾所有元素 返回 [start,end)之间的元素 substring(start, end) start(必需) -起始位置;end(可选)-结束位置,若未指定,则默认到末尾所有元素 返回 [start,end)之间的元素 substr(start, length) start(必需)-起始位置;length(可选)-所截取的元素的个数,若未指定,则默认到末尾 返回[start, start+length)之间的元素 当传的参数都为正数的时候,substring和sublice没有区别。当参数为负数时,三个函数的行为不尽相同。
- slice() - 将传入的负参数与字符串长度相加;
- substring() - 把所有的负值置为0;
- substr() - 将第一个负参数与字符串长度相加,第二个负参数置为0。
charAt
- 获取某个字符。
let str = 'hello';
str[4]; // 'o'
str.charAt(4); // 'o'
1
2
3
2
3
# 1.3 转换
toLowerCase
和toUpperCase
- 大小写转换。
split
- 分割字符串,获得数组。
let str = 'hello';
str.split('e'); // ["h", "llo"]
str.split('l'); // ["he","","o"]
1
2
3
2
3
# 1.4 HTML相关
link(url)
- 创建一个a标签。
let str = 'abc'
str.link('https://www.abc.com'); // "<a href="https://www.abc.com">abc</a>"
1
2
2
# 1.5 其他
concat
- 连接两个字符串文本。
- 性能表现不佳,
+
操作符比concat
快几十倍。
trim
- 清除字符串首尾的空白并返回。
- 不支持IE8。
// 兼容写法
if(!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g, '');
}
}
1
2
3
4
5
6
2
3
4
5
6
# 二、使用技巧
# 2.1 生成随机ID
// 36进制:由[0-9]、[A-Z]组成
// substr(2,len) 从小数点后一位开始取,直到取到指定的长度
const RandomId = len => Math.random().toString(36).substr(2, len);
const id = RandomId(10);
// id => "jg7zpgiqva"
1
2
3
4
5
2
3
4
5
# 2.2 生成星级评分
const StartScore = rate => "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);
2const start = StartScore(3);
3// start => "★★★"
1
2
3
2
3