substr和substring的区别

admin 36 0

`substr()`和`substring()`都是用于截取字符串的函数,但它们在处理字符串时存在一些关键的区别。

1. 参数处理:

* `substr(startIndex, length)`:`substr()`函数接受两个参数,第一个参数`startIndex`表示开始截取的索引位置,第二个参数`length`表示截取的长度,如果省略`length`参数,`substr()`函数将返回从起始索引到字符串末尾的字符串。

* `substring(startIndex, endIndex)`:`substring()`函数也接受两个参数,第一个参数`startIndex`表示开始截取的索引位置,第二个参数`endIndex`表示截取的结束索引位置(不包括该位置的字符),如果省略`endIndex`参数,`substring()`函数将返回从`startIndex`开始到字符串末尾的字符串。

2. 索引越界处理:

* `substr()`:如果`startIndex`是负数,`substr()`会将其视为0,并从字符串的开头开始截取。

* `substring()`:对于`substring()`,如果`startIndex`或`endIndex`是负数,它们都将被视为0,如果`startIndex`大于`endIndex`,`substring()`会自动交换这两个参数的值。

3. 截取方式:

* `substr()`:从指定的位置开始,截取指定长度的字符串。

* `substring()`:从指定的起始位置开始,截取到指定的结束位置(不包括结束位置)的字符串。

`substr()`和`substring()`在参数处理、索引越界处理和截取方式上有所不同,在使用时,需要根据具体的需求和场景选择合适的函数。