extraction
String.prototype.substring
Returns a new string between indexStart and indexEnd (exclusive). Unlike slice(), negative arguments are treated as 0 and the arguments are swapped when indexStart > indexEnd.
str.substring(indexStart[, indexEnd]) Parameters
| Parameter | Purpose |
|---|---|
| indexStart | Start index; negative or NaN becomes 0 |
| indexEnd | Exclusive end index (default str.length) |
Examples
console.log('hello world'.substring(0, 5)); Prints 'hello'
console.log('hello'.substring(3, 1)); Prints 'el' (arguments swapped)
console.log('hello'.substring(-3)); Prints 'hello' (negative treated as 0)
console.log('hello'.substring(2)); Prints 'llo'
Gotcha
Silent argument swapping and negative-as-zero behavior cause subtle bugs — prefer slice() unless you specifically want this coercion.
Related methods
String.prototype.slice
Extracts a section of the string from beginIndex up to but not including endIndex, returning a new string. Negative indices count from the end.
String.prototype.substr
Returns a portion of the string starting at start with the specified length. Deprecated as a legacy web feature — new code should use slice or substring, but implementations still ship it.
String.prototype.at
Returns the UTF-16 code unit at the given index as a single-character string, supporting negative indices that count from the end. Added in ES2022 as a cleaner alternative to str[str.length - 1].
String.prototype.codePointAt
Returns the full Unicode code point (0–0x10FFFF) starting at the given position, correctly combining surrogate pairs. Added in ES2015 as the Unicode-safe counterpart to charCodeAt.