Platzhalter Ersetzung ähnlich zu sprintf in Javascript

Thomas Darimont

Erfahrenes Mitglied
Hallo,

hier mal ein kleines Beispiel für bequemes Ersetzen von Platzhaltern in sprintf like Format-Strings (derzeit nur %s unterstützt).

Javascript:
function sprintf(format, a, b, c, d, e, f){

   if (format === undefined) {
      return "";
   }

   var args = [a, b, c, d, e, f];
   var idx = 0;
   return format.replace(/%s/g, function() { return args[idx++]; });
}

//Usage
sprintf("Key: %s, value: %s", "foo","bar")

//Output
// "Key: foo, value: bar"

Gruß Tom
 
Hallo Tom,

Gibt es denn dafür nicht schon String.format()?
Mein Fehler ;) Ich kenne von dir nur Java-Threads, somit hatte ich das Script völlig überlesen :D

Ein Verbesserungsvorschlag: Mittels arguments lässt sich eine variable Anzahl von Argumenten realisieren.
 
Hallo,

dein link zeigt auf java.lang.String ;-) nein im Kontext von JavaScript gibt es sowas AFAIK nicht direkt.
Das Beispiel verwendet den Trick der string.replace Funktion eine function mitzugeben die für jeden %s Platzhalter aufgerufen wird.

Viele Grüße,
Thomas
 
Hallo,

das mit den Arguments weis ich auch ;-) Dachte nur das es so schicker ausschaut :)
Javascript:
function sprintf2(){

  if (arguments.length == 0) {
    return "";
  }

  var format = arguments[0];
  if (arguments.length == 1) {
    return format;
  }

  var idx = 0;
  var args = Array.prototype.splice.call(arguments,1);

  return format.replace(/%s/g, function() { return args[idx++]; });
}

sprintf2("Key: %s, value: %s", "foo","bar") // "Key: foo, value: bar"

Och ab und an poste ich auch gerne mal hier was :)
http://www.tutorials.de/search/56481/


Viele Grüße,
Thomas
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück