JavaScript: String trimming and padding

When working with JavaScript in one of my projects I needed to trim strings and pad them. I googled for a solution and many sources I have got the following codes and sharing with you.

Trimming:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//trimming space from both side of the string
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
 
//trimming space from left side of the string
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
 
//trimming space from right side of the string
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

Using Trim Functions:

1
2
3
4
5
//write the code given above
var str = "  black  ";
alert("a" + str.trim() + "b");   //result "ablackb"
alert("a" + str.ltrim() + "b");  //result "ablack b"
alert("a" + str.rtrim() + "b");  //result "a blackb"

Padding:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//pads left
String.prototype.lpad = function(padString, length) {
	var str = this;
    while (str.length < length)
        str = padString + str;
    return str;
}
 
//pads right
String.prototype.rpad = function(padString, length) {
	var str = this;
    while (str.length < length)
        str = str + padString;
    return str;
}

Using Padding Functions:

1
2
3
var str = "5";
alert(str.lpad("0", 5)); //result "00005"
alert(str.rpad("0", 5)); //result "50000"
share save 120 16 JavaScript: String trimming and padding

6 thoughts on “JavaScript: String trimming and padding

  1. You may want to trim other characters as well:

    String.prototype.trim = function(c) {
    c = (c || “\s”);
    return this.replace(new RegExp(“^["+c+"]+|["+c+"]+$”, “g”),””);
    };

    Eg:

    ” test\n”.trim(“\\s\\n”); // trim spaces and line breaks

  2. With padding strings, it would probably be better to create an array of the length of the padding, and do Array.join() with the padding as the parameter. The reason is that arrays are mutable and thus would be able to join large strings very quickly, while a loop that mutates a string on every iteration would be significantly slower. This won’t be apparent for small strings, but will be significant for larger paddings.

  3. I love that you solve this by prototyping the String object. Very elegant solution.

  4. here is a potentially better solution: https://www.facebook.com/antimatterstudios/posts/10150752380719364

    to put that into a function

    function str_pad_left(string,pad,length){
    return (new Array(length+1).join(pad)+string).slice(-length);
    }

    function str_pad_right(string,pad,length){
    return (string+new Array(length+1).join(pad)).slice(0,length);
    }

    I have a suspicion that it’s faster because there is no logic, branching or other loops, it’s straight code, so deterministic, although I havent tested that, it just feels right.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>