C#’s String.Format For JavaScript
As a .Net Programmer I enjoy using String.Format frequently when working with strings, particularly in SQL statements. Now I don’t work with SQL in JavaScript but there are still plenty of times that I wish I could just whip out my handy dandy String.Format but sadly JavaScript does support this function…what’s that you say?…it does now?I decided enough was enough and I extended the String object to include my beloved String.Format.String.js
function _StringFormatInline(){var txt = this;for(var i=0;i<arguments.length;i++){var exp = new RegExp('{' + (i) + '}','gm');txt = txt.replace(exp,arguments[i]);}return txt;}function _StringFormatStatic(){for(var i=1;i<arguments.length;i++){var exp = new RegExp('{' + (i-1) + '}','gm');arguments[0] = arguments[0].replace(exp,arguments[i]);}return arguments[0];}if(!String.prototype.format){String.prototype.format = _StringFormatInline;}if(!String.format){String.format = _StringFormatStatic;}
I have given this feature 2 flavors; inline and static. boston laptop fix . denver wedding location . atlanta appliance repair . For all you C#ers you know what a static method is, and inline, well I’ll just show you. Now you can do either of these:Static
var str = String.format("This is a {0} string using the {1} method.","formatted","static");
Inline
var str = "This is a {0} string using the {1} method.".format("formatted","inline");
And a nice little sample page would go like this.
<html><head><title>String Extend</title><script src="String.js"></script><script>var str = String.format("This is {0} story about {0} {1}.","my","dog");var str2 = "I have 2 friends, {0} and {1}.".format("Doug","Jane");alert(str + "nn" + str2);</script></head><body></body></html>
Enjoy!
RSS ?

4 comments on this post
Cool one. I was looking for this type of utility since long.
Thanks Geekdaily team.
Your code is very usefull for me. Thanks very much.
Here’s my own take on it:
String.format = String.prototype.format = function() {
var i=0;
var string = (typeof(this) == “function” && !(i++)) ? arguments[0] : this;
for (; i < arguments.length; i++)
string = string.replace(/\{\d+?\}/, arguments[i]);
return string;
}
Here is my version:
String.format = function(p_txt){
if ( arguments.length <= 1 ) {
return p_txt;
}
for( var v_idx = 1, v_num = arguments.length; v_idx < v_num; v_idx++ ){
p_txt = p_txt.replace(new RegExp("\\{" + (v_idx – 1) + "\\}", "gi"), arguments[v_idx]);
}
return p_txt;
};
String.prototype.format = function(){
Array.prototype.unshift.apply(arguments, [this]);
return String.format.apply(String, arguments);
};