类似于 slice vs splice 数组方法之间的差异是很难记住的,也可能很难记住基线和基线 JavaScript 字符串方法之间的差异。
<$>[注] **TL;DR:**子串采用起始索引和终结索引,而子串则采用起始索引和字符长度。
String.prototype.substring 标签
substring() 方法,全部拼写,返回一个新的字符串与字符串的子集. 通过一个参数,我们得到字符串从指定的索引 **(包括)**开始到字符串的结束:
1const myStr = 'Alligator';
2
3const myNewStr = myStr.substring(2);
4
5console.log(myNewStr); // ligator
通过两个参数,我们将从起始索引到终端索引 **(专属)**的字符串子集:
1const myStr = 'Alligator';
2
3const myNewStr = myStr.substring(0, 3);
4
5console.log(myNewStr); // All
标签: 原型.substr
substr() 方法非常相似,但第二个参数不是为终端索引,而是为字符数量。
在这里,我们想要从2的起始索引中创建一个3个字符串:
1const myStr = 'Alligator';
2
3const myNewStr = myStr.substr(2, 3);
4
5console.log(myNewStr); // lig
负起点指数
此外,对substr 的第一个参数可以是负整数,在这种情况下,返回字符串的开始从使用该方法的字符串的尽头计算:
1const myStr = 'Alligator';
2
3const myNewStr = myStr.substr(-2);
4
5console.log(myNewStr); // or
同样的结果只有一个论点
当仅使用第一个参数并且是正整数时,子串和子串都返回相同的值:
1const myStr = 'Alligator';
2
3const myNewStrViaSubstring = myStr.substring(3);
4
5const myNewStrViaSubstr = myStr.substr(3);
6
7console.log(myNewStrViaSubstring); // igator
8
9console.log(myNewStrViaSubstr); // igator