2415 Stimmen

JavaScript-Äquivalent zu printf/String.Format

Ich bin auf der Suche nach einem guten JavaScript-Äquivalent der C/PHP printf() oder für C#/Java-Programmierer, String.Format() ( IFormatProvider für .NET).

Meine Grundanforderung ist ein Tausendertrennzeichenformat für Zahlen für jetzt, aber etwas, das viele Kombinationen (einschließlich Daten) verarbeitet, wäre gut.

Ich weiß, dass Microsofts Ajax Bibliothek bietet eine Version von String.Format() aber wir wollen nicht den gesamten Overhead dieses Rahmens haben.

9voto

redestructa Punkte 1164

Ich benutze diese:

String.prototype.format = function() {
    var newStr = this, i = 0;
    while (/%s/.test(newStr))
        newStr = newStr.replace("%s", arguments[i++])

    return newStr;
}

Dann rufe ich sie an:

"<h1>%s</h1><p>%s</p>".format("Header", "Just a test!");

9voto

Pooria Punkte 780

Für JavaScript gibt es "sprintf", das Sie unter folgender Adresse finden http://www.webtoolkit.info/javascript-sprintf.html .

9voto

Spudley Punkte 161296

El PHPJS-Projekt hat JavaScript-Implementierungen für viele der PHP-Funktionen geschrieben. Seit PHPs sprintf() Funktion ist im Grunde das Gleiche wie die von C printf() , ihre JavaScript-Implementierung des Programms sollte Ihren Bedürfnissen entsprechen.

8voto

Peter Punkte 19

Eine ganz leicht abweichende Version, die ich bevorzuge (diese Version verwendet {xxx} Token statt {0} nummerierte Argumente, das ist viel selbstdokumentierender und eignet sich viel besser für die Lokalisierung):

String.prototype.format = function(tokens) {
  var formatted = this;
  for (var token in tokens)
    if (tokens.hasOwnProperty(token))
      formatted = formatted.replace(RegExp("{" + token + "}", "g"), tokens[token]);
  return formatted;
};

Eine Variante wäre:

  var formatted = l(this);

die zuerst eine l()-Lokalisierungsfunktion aufruft.

6voto

Murtaza Hussain Punkte 2526

Wir können ein einfaches, leichtes String.Format String-Operationsbibliothek für Typescript.

String.Format():

var id = image.GetId()
String.Format("image_{0}.jpg", id)
output: "image_2db5da20-1c5d-4f1a-8fd4-b41e34c8c5b5.jpg";

Zeichenfolge Format für Bezeichner:

var value = String.Format("{0:L}", "APPLE"); //output "apple"

value = String.Format("{0:U}", "apple"); // output "APPLE"

value = String.Format("{0:d}", "2017-01-23 00:00"); //output "23.01.2017"

value = String.Format("{0:s}", "21.03.2017 22:15:01") //output "2017-03-21T22:15:01"

value = String.Format("{0:n}", 1000000);
//output "1.000.000"

value = String.Format("{0:00}", 1);
//output "01"

String Format für Objekte einschließlich Spezifizierer:

var fruit = new Fruit();
fruit.type = "apple";
fruit.color = "RED";
fruit.shippingDate = new Date(2018, 1, 1);
fruit.amount = 10000;

String.Format("the {type:U} is {color:L} shipped on {shippingDate:s} with an amount of {amount:n}", fruit);
// output: the APPLE is red shipped on 2018-01-01 with an amount of 10.000

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X