字符串基础知识

# 字符串基础知识

[TOC]

# 一、常用操作

# 1.1 查找

  • includes(substring, ?position):是否包含字符串,返回布尔值。
  • startsWith(substring, ?position):是否以给定字符串开头,返回布尔值。
  • endsWith(substring, ?position):是否以给定字符串结尾,返回布尔值。
let s = 'hello';
s.endsWith('lo');	// true
1
2
  • indexOf:返回首个被发现的给定值的索引值,未发现则返回-1。
  • lastIndexOf:返回最后一个被发现的给定值的索引值,未发现则返回-1。
let str = 'hello';
str.indexOf('l');	// 2
str.indexOf('m');	// -1
1
2
3

# 1.2 获取

  • substringsubstr、与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

# 1.3 转换

  • toLowerCasetoUpperCase

    • 大小写转换。
  • split

    • 分割字符串,获得数组。
let str = 'hello';
str.split('e');	// ["h", "llo"]
str.split('l');	// ["he","","o"]
1
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

# 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.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.2 生成星级评分

const StartScore = rate => "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);
2const start = StartScore(3);
3// start => "★★★"
1
2
3