Created
October 6, 2023 07:26
-
-
Save tarsusi/dae9fe640d9397ce8e94520f02d699c0 to your computer and use it in GitHub Desktop.
Difference between slice, substr and substring
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| TL;DR: | |
| If you know the index (the position) on which you'll stop (but NOT include), use slice(). | |
| If you know the length of characters to be extracted, you could use substr(), but that is discouraged as it is deprecated. | |
| Otherwise, read on for a full comparison | |
| Syntax | |
| string.slice(start,end) | |
| string.substr(start,length) | |
| string.substring(start,end) | |
| Note #1: slice()==substring() | |
| What it does? | |
| slice() extracts parts of a string and returns the extracted parts in a new string. | |
| substr() extracts parts of a string, beginning at the character at the specified position, and returns the specified number of characters. | |
| substring() extracts parts of a string and returns the extracted parts in a new string. | |
| Note #2: slice()==substring() | |
| Changes the Original String? | |
| slice() doesn't | |
| substr() doesn't | |
| substring() doesn't | |
| Note #3: slice()==substr()==substring() | |
| Using Negative Numbers as an Argument | |
| slice() selects characters starting from the end of the string | |
| substr() selects characters starting from the end of the string | |
| substring() doesn't perform | |
| Note #4: slice()==substr() | |
| If the First Argument is Greater than the Second | |
| slice() doesn't perform | |
| substr() since the Second Argument is NOT a position, but length value, it will perform as usual, with no problems | |
| substring() will swap the two arguments, and perform as usual | |
| The First Argument | |
| slice() required; starting Index | |
| substr() required; starting Index | |
| substring() required; starting Index | |
| Note #5: slice()==substr()==substring() | |
| The Second Argument | |
| slice() optional; the position (up to, but not including) where to end the extraction | |
| substr() optional; the number of characters to extract | |
| substring() optional; the position (up to, but not including) where to end the extraction | |
| Note #6: slice()==substring() | |
| What if the Second Argument is Omitted? | |
| slice() selects all characters from the start-position to the end of the string | |
| substr() selects all characters from the start-position to the end of the string | |
| substring() selects all characters from the start-position to the end of the string | |
| Note #7: slice()==substr()==substring() | |
| So, you can say that there's a difference between slice() and substr(), while substring() is basically a copy of slice(). | |
| If you want substr's functionality: | |
| "foobarbaz".substr(index, length); | |
| without using a deprecated feature, you can just do: | |
| "foobarbaz".substring(index, length + index); | |
| And get the exact same results bar all of the edge-cases, like negative index/length. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment