- substring() 函数:
- 不接受负数参数。
- 如果第一个参数大于第二个参数,则交换它们的位置,以确保第一个参数是起始位置。
- 不修改原始字符串。
- 用法: str.substring(start, end)
- slice() 函数:
- 支持负数参数,并且可以使用负数参数从字符串的末尾开始截取。
- 如果省略第二个参数,将截取从起始位置到字符串的末尾的所有字符。
- 不修改原始字符串。
- 用法: str.slice(start, end)
因此,两个函数的主要区别在于处理负数参数和空参数的方式。如果不需要处理负数参数,可以使用任何一个函数,它们的功能是相同的。但是,如果需要处理负数参数或者希望始终以某种方式处理空参数,应该使用 slice() 函数。
在编程中, substr() 函数被用来从一个字符串中获取一个子字符串。尽管 substr() 函数在某些情况下可能是有用的,但并不推荐使用它,因为它存在以下问题:
- substr() 函数不是很直观: substr() 函数的语法是 substr(string,start,length),其中 start 表示从哪个位置开始获取子字符串,length 表示获取子字符串的长度。这种语法很容易出错,特别是在处理多个字符串时。
- substr() 函数的行为与预期不一致: substr() 函数在处理负数的 start 参数时,会将其转换为字符串长度加上该负数,然后再获取子字符串。这个行为很容易导致错误,并且可能会让代码更难以理解和维护。
- substr() 函数不支持 Unicode: substr() 函数只能处理 ASCII 字符串,如果要处理 Unicode 字符串,就需要使用更高级的函数。
例子
参数为正数
参数为负数