字符串切片和子字符串方法的区别


JavaScript 是一种动态且最流行的编程语言,可用于客户端和服务器端。JavaScript 用于创建交互式网页。它有许多框架,例如 React JS、Angular JS、Node JS 等。

JavaScript 包含许多内置函数来执行各种任务。有一些函数用于操作字符串。Str.slice 和 str.substring 是两个可以操作字符串的内置函数。尽管这两个函数的功能几乎相同,但它们之间也存在一些差异。

String.slice() 方法

此方法根据指定的索引返回字符串的一部分。slice 方法的语法如下所示:

string.slice (start, end)

此方法有两个参数,即开始和结束。开始指定应从中开始的索引,结束索引指示要返回的字符串的最后一个索引。返回字符串时不包括结束索引。结束不是必需的。如果未指定结束,则从指定的开始索引开始返回整个字符串。这里,索引从“0”开始。

String.substring() 方法

此方法也类似于 slice 方法,并返回字符串的一部分作为新字符串。此方法的语法如下所示:

string.substring (start, end)

这里,开始和结束是两个参数,表示应从哪个索引返回字符串。如果未指定结束索引,则从指定的开始索引返回整个字符串。返回字符串时不包括结束索引。索引从“0”开始。

考虑一个字符串长度为 12 的字符串“Good Morning”。让我们通过以下示例案例了解这些方法的功能:

const greeting = 'Good Morning'

案例 1

如果开始索引是正数,则两种方法都给出相同的输出。

greeting.slice (5)  		//  'Morning'
greeting.substring (5)  	// 'Morning'

这里,索引取为 5,因此返回从主字符串第 5 个位置开始的字符串。

案例 2

如果给定的索引为负数,则这两种方法会给出不同的输出,如下所示。

greeting.slice (-7)  // 'Morning'
greeting.substring (-7)  // 'Good Morning'

在 slice 方法中,当给出负索引时,它从字符串末尾开始计数,并返回从该索引位置开始的字符串。在 substring 中,任何负数都被视为零。因此,它从索引 0 开始并返回整个字符串。

案例 3

当传递字符串长度时,两种方法都返回一个空字符串。

greeting.slice (12)  // ''
greeting.substring (12)  // ''

案例 4

开始索引大于结束索引

greeting.slice (9, 5)  // ''
greeting.substring (9, 5)  // 'Morn'

Slice 方法返回一个空字符串,而 substring 方法交换这些索引并返回字符串。不包括结束索引。

案例 5

当开始索引和结束索引都为负数时

greeting.slice (-12, -8)  // 'Good'
greeting.substring (-12, -8)  // ''

Slice 方法从字符串末尾计数到指定的索引并返回它。由于两个索引都是负数,并且 substring 方法将它们视为零,则它从零开始并在零结束。因此,返回一个空字符串。

案例 6

当开始索引为负数而结束索引为正数时

greeting.slice (-3, 5)  // ''
greeting.substring (-3, 5)  // 'Good'

这里,由于结束索引位于开始索引之前,因此 slice 方法返回一个空字符串。但是 substring 方法将负索引视为零,并从索引 0 开始到索引 5 结束(不包括它)。因此,它返回“Good”。

案例 7

当开始索引为正数但结束索引为负数时

greeting.slice (5, -3)  // 'Morn'
greeting.substring (5, -3)  // 'Good'

Slice 方法返回“Morn”作为输出,而 substring 方法返回“Good”。Substring 方法将结束索引视为零,并且由于开始索引 (5) 大于结束索引 (0),因此它简单地交换它们的位置 (0,5) 并返回字符串。

Slice 与 Substring 方法

下表突出显示了 slice 方法和 substring 方法之间的重要区别:

Slice 方法

Substring 方法

它返回字符串的一部分

它也用于提取字符串的一部分

它允许负索引并返回从后开始计数的字符串

如果给出负索引,则将其视为索引 0(零)位置。

如果开始索引大于结束索引,则返回一个空字符串

如果开始索引大于结束索引,则只需交换它们的位置并根据该位置返回字符串

结论

String.slice 和 string.substring 方法用于字符串操作。它们都基于其参数并在某些情况下相似。它们的主要区别之一是当它们具有负值作为其索引时,如上述示例所示。第二个是当开始索引大于结束索引时。

更新于:2023-07-13

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.