if(!String.format){ String.format = function(){ var argv = Array.prototype.slice.call(arguments), string = argv[0], i = 0; string = string.replace("%%", "<<percent>>", "g"); while(argv[i++]){ string = string.replace(/%[a-z]/, argv[i]); } string = string.replace("<<percent>>", "%", "g"); return string; } } txt.value = String.format( "Hello %s!\n" + "The answer to %s is %d.\n" + "Here's an array: %a\n" + "Here's a percentage sign: %%\n" + "Here's a percentage sign and the letter d: %d\n" + "Here it is again but escaped properly: %%d\n" + "Here's the format string itself, just to go extra-meta:\n\n" + "Hello %%s!\\nThe answer to %%s is %%d\\nHere's an array: %%a\\nHere's a percentage sign: %%%%\\nHere's a percentage sign and the letter d: %%d\\nHere it is again but escaped properly: %%%%d\\nHere's the format string itself, just kidding.", "world", "Life, the Universe, and Everything", 42, [1,2,3,4,5]);
<textarea id=txt></textarea>
#txt{ width:100%; height:25em; background:inherit; border:none; }