JavaScript substring, substr and slice
The manipulations with texts are traditionally tedious, but essential tasks in the life of every program developer. Although it never was and most probably will never be a big pleasure we usually have no option to avoid it. The programming systems and tools provide rich sets of functions for the common operation with strings. However, the variety of methods often is confusing, in particular taking in account the fact that exactly the same method name may not mean exactly the same functionality in the different languages. Honestly speaking, even after more than ten years of intensive programming in JavaScript sometimes I’m still tangled in the details of substring, substr and slice methods and not always can recall how the different values of their parameters can affect the results.
In this article I tried to take this specific issue and put it in order. First of all, I placed the full description of all three methods together, in one place. Then I examine their similarities and differences as well as the choice considerations. Finally, I placed here a simple live form in which you can play with the functions and parameters and immediately see the results.
JavaScript substring in details
The substring method extracts and returns the part of string between two specified indexes.
The method receives two parameters:
start | The position from which the extraction starts (the first character is at the position 0). This parameter is required |
end | The position where the extraction ends, not including. This parameter is optional. If omitted, the method extracts up to the end of string |
start
The position from which the extraction starts (the first character is at the position 0).
This parameter is required
end
The position where the extraction ends, not including.
This parameter is optional. If omitted, the method extracts up to the end of string
The return value is a new extracted string. Note that the original string is not changed.
Example of use with two parameters:
Example of use with one parameter:
If start is greater than end, the method swaps the two parameters. For example:
If either start or end is negative, the method considers it equal to 0. For example:
JavaScript substr in details
The substr method extracts and returns the part of string beginning at the specified position and containing the specified number of characters.
The method receives two parameters:
start | The position from which the extraction starts (the first character is at the position 0). This parameter is required |
length | The number of characters to extract. This parameter is optional. If omitted, the method extracts up to the end of string |
start
The position from which the extraction starts (the first character is at the position 0).
This parameter is required
length
The number of characters to extract.
This parameter is optional. If omitted, the method extracts up to the end of string
The return value is a new extracted string. Note that the original string is not changed.
Example of use with two parameters:
Example of use with one parameter:
If start is negative, the actual starting position is calculated from the end of string. For example:
Note, that negative start is not supported by Internet Explorer 8 and earlier.
If length is less or equal to 0 the method returns an empty string.
JavaScript slice method
Please note that besides the string slice method JavaScript provides an array slice method which is out of this article’s purposes. Don’t confuse!
The slice method extracts and returns the part of string between two specified indexes.
The method receives two parameters:
start | The position from which the extraction starts (the first character is at the position 0). This parameter is required |
end | The position where the extraction ends, not including. This parameter is optional. If omitted, the method extracts up to the end of string |
start
The position from which the extraction starts (the first character is at the position 0).
This parameter is required
end
The position where the extraction ends, not including.
This parameter is optional. If omitted, the method extracts up to the end of string
The return value is a new extracted string. Note that the original string is not changed.
Example of use with two parameters:
Example of use with one parameter:
One or both start and end parameters of slice method can be negative. The actual position of negative parameter is calculated from the end of string. For example:
substring, substr and slice similarities and differences
The below table shows the main differences and similarities of the three methods:
Method | Parameters | Negative Start Support |
---|---|---|
substring | Start, End | No |
substr | Start, Length | Yes |
slice | Start, End | Yes |
substring: Start, End
Negative Start not supported
substr: Start, Length
Negative Start supported
substring: Start, End
Negative Start supported
Remember:
Both substring and slice extract the part of string between two specified indexes, while substr extracts the specified number of characters from specified position.
Both substr and slice can receive a negative 'start' parameter, while substring equates negative numbers to zero.
Additional choose considerations
In general, all three methods are intended to solve very similar tasks, so the choice mostly depends on the developer’s taste. However, there are some additional considerations that can be taken in account.
Code consistency considerations
Many client-side developers are also involved with a server-side code. It’s a good practice to use the methods with a similar syntax whenever it’s possible in order to avoid the possible mistakes. For example, If your server is written in PHP, it’s better to use substr in JavaScript, and if your server is written in ASP.NET or Java then the substring method is recommended.
Browser compatibility considerations
As it was mentioned above, use of negative numbers in substr ‘start’ parameter is not compatible with all browsers. So, whenever you plan to base the extraction on the end of string you definitely should use slice and avoid the use of substr.
Try it yourself
As it was promised at the article start, the following simple form lets you playing with the three methods described above. Enjoy!