These 7 basic string functions are easy to implement adding them to the String object, are very useful and the resulting code is a lot more legible, maintainable and elegant.
1 y 2: Encode y Decode Uri
I use these functions a lot and very often forgot to add the suffix “Component” to them. It’s kind of unnatural. With these simple extensions, my problems just went away.
/** * Encodes the string to URI format * Usage: * var str = "This is a string"; * str = str.encodeUri(); * console.log( str ); * // Outputs "This%20is%20a%20string" */ String.prototype.encodeUri = function () { return encodeURIComponent( this ); }; // end encodeUri /** * Decodes the string from Uri format * Usage: * var str = "This%20is%20a%20string"; * str = str.decodeUri(); * console.log( str ); * // Outputs "This is a string"; */ String.prototype.decodeUri = function () { return decodeURIComponent( this ); }; // end decodeUri
3 y 4: EscapeRegEx & ReplaceAll
For some strange reason, when replacing one string for another only the first match is replaced. This is a problem, but easily solved with these two functions and adding these extensions, use is much simpler.
/** * Creates a regular expression string from the string, * Prepending "\" special characters "escaping" the chain * Usage: * var str = "Hi!"; * str = str.escapeRegExp(); * console.log( str ); * // Outputs: "Hi\!" */ String.prototype.escapeRegExp = function () { return this.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); }; // end function escapeRegExp /** * Replace all instances of "find" by "replace" * in the string * Usage: * str = "Hello my name is $nombre, $nombre is my name"; * str = str.replaceAll( "$nombre", "Luis" ); * console.log( str ); * // Outputs: "Hello my name is Luis, Luis is my name" */ String.prototype.replaceAll = function ( find, replace ) { return this.replace(new RegExp(find.escapeRegExp(), 'g'), replace); }; // end function replaceAll
5, 6 y 7: Right, Left & Contains
If VB was your first language you surely miss these functions. To implement for all strings is quite simple, saves keystrokes and the result is very intuitive:
/** * Returns "n" charactes to the left * Usage: * var str = "ABCDE"; * str = str.left(3); * console.log( str ); * // Outputs: "ABC" */ String.prototype.left = function ( n ){ if (n <= 0) return ""; else if (n > this.length) return this; else return this.substring(0,n); }; // end function left /** * Returns "n" characteres to the right * Uso: * var str = "ABCDE"; * str = str.right(3); * console.log( str ); * // Outputs: "CDE" */ String.prototype.right = function ( n ) { if (n <= 0) return ""; else if (n > this.length) return this; else { var iLen = this.length; return this.substring(iLen, iLen - n); } }; // end function right /** * Returns true if the string contains the parameter "str" * Usage: * var str = "Hello world!"; * var lookFor = "world"; * var inString = str.contrains(lookFor); * console.log(inString); * // Outputs: true */ String.prototype.contains = function ( str ) { return ( this.indexOf( str ) > -1 ); }; // end function contains
Running this script at the beginning of your code will allow you to use these extensions, will make your life easier and allows you to have a clean and elegant code. Happy Coding! 🙂