Left Trim in Javascript
I've already answered a similar question just a few moments ago, but here's my solution to your question.
String.prototype.trimLeft = String.prototype.trimLeft || function () {
var start = -1;
while( this.charCodeAt(++start) < 33 );
return this.slice( start, this.length);
};
The above solution is based on Ariel Flesler fast trim function and the fact that Firefox 3.5 and above has a built-in trimLeft
method on the String
object.
String.prototype.leftTrim = function() {
return this.replace(/^\s+/,"");
}
Use:
String.prototype.leftTrim = function() {
return this.replace(/^\s+/,"");
}
In the regex the:
- ^ means "from the beginning of the string"
- \s means whitespace character class
- + means one-or more (greedy)
so....
- ^\s+ means "one or more consecutive whitespace characters from the beginning of the class"
Note: The g
flag at the end of your regex is unnecessary as the anchors (^ and $) explicitly define what will match. There cannot be multiple matches.
See https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp for details on regex syntax in javascript
to keep this updated:
ES 10:
with ES10 comes the trimStart
functionality.
a synonym for it is trimLeft
.
const greeting = ' Hi! ';
console.log(greeting);
// " Hi! "
console.log(greeting.trimStart());
// "Hi! "
console.log(greeting.trimLeft());
// "Hi! "
ES6:
an ES6 version could be:
function trimLeft(string) {
const first = [...string].findIndex(char => char !== ' ');
return string.substring(first, string.length);
}
console.log(trimLeft(" Hi! ", chars));
// "Hi! "