string-polyfill.js
1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
String.prototype.substr = function (start, length) {
if (start === undefined) {
return this.toString()
}
if (typeof start !== 'number' || (typeof length !== 'number' && length !== undefined)) {
return ''
}
const strArr = [...this]
const _length = strArr.length
if (_length + start < 0) {
start = 0
}
if (length === undefined || (start < 0 && start + length > 0)) {
return strArr.slice(start).join('')
} else {
return strArr.slice(start, start + length).join('')
}
}
String.prototype.substring = function (start, end) {
if (start === undefined) {
return this.toString()
}
if (typeof start !== 'number' || (typeof end !== 'number' && end !== undefined)) {
return ''
}
if (!(start > 0)) {
start = 0
}
if (!(end > 0) && end !== undefined) {
end = 0
}
const strArr = [...this]
const _length = strArr.length
if (start > _length) {
start = _length
}
if (end > _length) {
end = _length
}
if (end < start) {
[start, end] = [end, start]
}
return strArr.slice(start, end).join('')
}