有人知道这两种方法的区别吗?
String.prototype.slice
String.prototype.substring
有人知道这两种方法的区别吗?
String.prototype.slice
String.prototype.substring
当前回答
substr:它为我们提供了基于指定索引获取部分字符串的方法。 substr-的语法 string.substr(开始、结束) Start - Start索引说明从哪里开始抓取。 End - End索引告诉upto字符串的读取位置。它是可选的。
slice:它提供了基于指定索引获取部分字符串的方法。它允许我们指定正数和下标。 slice - string.slice(start,end)的语法 Start - Start索引说明从哪里开始抓取。这是 End - End索引告诉upto字符串的读取位置。它是可选的。 在“拼接”中,起始索引和结束索引都有助于取正索引和负索引。
字符串中'slice'的示例代码
var str="Javascript";
console.log(str.slice(-5,-1));
output: crip
字符串中的“substring”示例代码
var str="Javascript";
console.log(str.substring(1,5));
output: avas
[*注意:负索引从字符串的末尾开始。]
其他回答
TL; diana:
如果您知道要停止(但不包含)的索引(位置),则使用slice()。 如果您知道要提取的字符长度,则可以使用substr(),但不建议这样做,因为已弃用。
否则,请继续阅读完整的比较
语法
string.slice(开始、结束) string.substr(开始,长度) string.substring(开始、结束)
纸条1:切片()
它能做什么?
Slice()提取字符串的部分,并在新字符串中返回提取的部分。 Substr()从指定位置的字符开始提取字符串的各个部分,并返回指定的字符数。 Substring()提取字符串的部分,并在新字符串中返回提取的部分。
纸条2:切片()
改变原来的字符串?
片()没有 substr()没有 substring()没有
注3:切片
使用负数作为参数
Slice()选择从字符串末尾开始的字符 Substr()选择从字符串结尾开始的字符 Substring()不执行
注4:slice()==substr()
如果第一个参数大于第二个参数
Slice()不执行 substr()因为第二个参数不是一个位置,而是长度值,它将照常执行,没有问题 Substring()将交换两个参数,并照常执行
第一个论证
片()要求;开始指数 substr()要求;开始指数 substring()要求;开始指数
注:切片()==substr(=)=字幕()
第二个论证
片()可选的;位置(直到但不包括)结束抽取的位置 substr()可选;要提取的字符数 substring()可选的;位置(直到但不包括)结束抽取的位置
纸条6:切片()
如果省略了第二个参数会怎样?
Slice()选择从字符串开始位置到末尾的所有字符 Substr()选择从字符串开始位置到末尾的所有字符 Substring()选择从字符串开始位置到末尾的所有字符
注:切片()
所以,你可以说slice()和substr()之间有区别,而substring()基本上是slice()的一个副本。
如果你想要substr的功能:
"foobarbaz".substr(index, length);
不使用已弃用的功能,你可以这样做:
"foobarbaz".substring(index, length + index);
在所有的边情况下得到完全相同的结果,比如负索引/长度。
substring和slice -之间的区别是它们如何处理负的和忽略的行参数:
substring(开始、结束)
负参数被解释为零。太大的值将被截断为字符串的长度:
alert("testme".substring(-2)); // "testme", -2 becomes 0
此外,如果start > end,参数将互换,即在开始和结束之间返回绘图线:
alert("testme".substring(4, -1)); // "test"
// -1 Becomes 0 -> got substring (4, 0)
// 4> 0, so that the arguments are swapped -> substring (0, 4) = "test"
片
负数值从线的末端开始测量:
alert("testme".slice(-2)); // "me", from the end position 2
alert("testme".slice(1, -1)); // "estm", from the first position to the one at the end.
它比奇怪的逻辑子字符串方便得多。
除IE8-外,所有浏览器均支持substr的第一个参数为负值。
如果选择这三种方法之一,在大多数情况下使用-它将是切片:负参数,它的维护和操作最明显。
substr:它为我们提供了基于指定索引获取部分字符串的方法。 substr-的语法 string.substr(开始、结束) Start - Start索引说明从哪里开始抓取。 End - End索引告诉upto字符串的读取位置。它是可选的。
slice:它提供了基于指定索引获取部分字符串的方法。它允许我们指定正数和下标。 slice - string.slice(start,end)的语法 Start - Start索引说明从哪里开始抓取。这是 End - End索引告诉upto字符串的读取位置。它是可选的。 在“拼接”中,起始索引和结束索引都有助于取正索引和负索引。
字符串中'slice'的示例代码
var str="Javascript";
console.log(str.slice(-5,-1));
output: crip
字符串中的“substring”示例代码
var str="Javascript";
console.log(str.substring(1,5));
output: avas
[*注意:负索引从字符串的末尾开始。]
Ben Nadel写了一篇关于这方面的好文章,他指出了这些函数参数的区别:
String.slice( begin [, end ] )
String.substring( from [, to ] )
String.substr( start [, length ] )
他还指出,如果要切片的参数是负的,它们将从末尾引用字符串。Substring和substr没有。
这是他关于这方面的文章。
slice方法和substring方法的唯一区别是参数
两者都有两个参数,例如start/from和end/to。
你不能传递一个负值作为子字符串方法的第一个参数,但slice方法从结束遍历它。
切片方法参数细节:
参数
start_index 从切片开始的位置索引。如果value为负,则表示从最后开始。例如,最后一个字符是-1。 end_index 切片结束后的索引。如果没有提供切片将从start_index到字符串的末尾。如果是负值,指数将从字符串的末端测量。
子字符串方法参数详细信息:
参数
从 它应该是一个非负整数,以指定子字符串应该从哪里开始。 来 一个可选的非负整数,用于提供应在哪个子字符串之前结束的索引。