本文详细解析 JavaScript 中 substr 和 substring 两个字符串截取方法的区别。substr 通过起始位置和长度截取子串,而 substring 通过起始和结束索引截取。重点对比了两者在参数处理、负数行为及边界情况上的差异,并附带完整代码示例,帮助开发者准确选择合适的方法。
substr 方法详解
该方法用于从指定位置开始,截取指定长度的子字符串。
stringvar.substr(start [, length ])
参数说明
stringvar
必选参数,表示需要从中提取子字符串的原始字符串字面量或 String 对象。
start
必选参数,指定子字符串的起始位置,字符串索引从 0 开始计算。
length
可选参数,指定返回子字符串中包含的字符数量。
说明
若 length 为 0 或负数,则返回空字符串;若未指定该参数,子字符串将一直截取到 stringvar 的末尾。
示例
以下代码演示了 substr 方法的具体用法。
代码如下:
function SubstrDemo(){
var s, ss; // 声明变量。
var s = "The rain in Spain falls mainly in the plain.";
ss = s.substr(12, 5); // 获取子字符串。
return(ss); // 返回 "Spain"。
} 举例: [Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
substring 方法
substring 方法详解
该方法用于返回位于 String 对象中指定位置的子字符串。
strVariable.substring(start, end)
"String Literal".substring(start, end)
参数说明
start
指定子字符串的起始位置,索引从 0 开始计算。
end
指定子字符串的结束位置,索引从 0 开始计算。
说明
substring 方法返回包含从 start 到 end(不包含 end)之间字符的子字符串。
该方法会自动使用 start 和 end 中较小的值作为起始点。例如,strvar.substring(0, 3) 与 strvar.substring(3, 0) 返回相同的子字符串。
若 start 或 end 为 NaN 或负数,则将其替换为 0。
子字符串的长度等于 start 和 end 之差的绝对值。例如,strvar.substring(0, 3) 和 strvar.substring(3, 0) 返回的子字符串长度均为 3。
示例
以下代码演示了 substring 方法的具体用法。
代码如下:
function SubstringDemo(){
var ss; // 声明变量。
var s = "The rain in Spain falls mainly in the plain..";
ss = s.substring(12, 17); // 取子字符串。
return(ss); // 返回子字符串。
} 更多基础可以参考:
https://www.jb51.net/w3school/js/jsref_substring.htm
https://www.jb51.net/w3school/js/jsref_substr.htm