205 Stimmen

Äquivalent von String.format in jQuery

Ich versuche, einige JavaScript-Code von MicrosoftAjax zu JQuery zu verschieben. Ich verwende die JavaScript-Äquivalente in MicrosoftAjax der beliebten .net-Methoden, z. B. String.format(), String.startsWith(), etc. Gibt es Äquivalente zu diesen Methoden in JQuery?

0voto

JellicleCat Punkte 26058

Die Antwort von Josh Stodola hat nicht funktioniert, aber die folgende hat bei mir funktioniert. Beachten Sie die Angabe von prototype . (Getestet mit IE, FF, Chrome und Safari.):

String.prototype.format = function() {
    var s = this;
    if(t.length - 1 != args.length){
        alert("String.format(): Incorrect number of arguments");
    }
    for (var i = 0; i < arguments.length; i++) {       
        var reg = new RegExp("\\{" + i + "\\}", "gm");
        s = s.replace(reg, arguments[i]);
    }
    return s;
}

s sollte wirklich ein klonen. von this um keine destruktive Methode zu sein, aber das ist nicht wirklich notwendig.

0voto

Kishor Dalwadi Punkte 1
<html>
<body>
<script type="text/javascript">
   var str="http://xyz.html?ID={0}&TId={1}&STId={2}&RId={3},14,480,3,38";
   document.write(FormatString(str));
   function FormatString(str) {
      var args = str.split(',');
      for (var i = 0; i < args.length; i++) {
         var reg = new RegExp("\\{" + i + "\\}", "");             
         args[0]=args[0].replace(reg, args [i+1]);
      }
      return args[0];
   }
</script>
</body>
</html>

0voto

Annie Punkte 2970

Erweiterung der großartigen Antwort von adamJLev über Hier ist die TypeScript-Version:

// Extending String prototype
interface String {
    format(...params: any[]): string;
}

// Variable number of params, mimicking C# params keyword
// params type is set to any so consumer can pass number
// or string, might be a better way to constraint types to
// string and number only using generic?
String.prototype.format = function (...params: any[]) {
    var s = this,
        i = params.length;

    while (i--) {
        s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), params[i]);
    }

    return s;
};

0voto

ShrapNull Punkte 960

Ich habe einen Plunker, der ihn zum String-Prototyp hinzufügt: string.format Er ist nicht nur so kurz wie einige der anderen Beispiele, sondern auch viel flexibler.

Die Verwendung ist ähnlich wie bei der c#-Version:

var str2 = "Meet you on {0}, ask for {1}";
var result2 = str2.format("Friday", "Suzy"); 
//result: Meet you on Friday, ask for Suzy
//NB: also accepts an array

Außerdem wurde Unterstützung für die Verwendung von Namen und Objekteigenschaften hinzugefügt.

var str1 = "Meet you on {day}, ask for {Person}";
var result1 = str1.format({day: "Thursday", person: "Frank"}); 
//result: Meet you on Thursday, ask for Frank

0voto

test30 Punkte 3166

Sie können auch Array mit Ersetzungen wie dieser schließen.

var url = '/getElement/_/_/_'.replace(/_/g, (_ => this.ar[this.i++]).bind({ar: ["invoice", "id", 1337],i: 0}))
> '/getElement/invoice/id/1337

oder Sie können versuchen bind

'/getElement/_/_/_'.replace(/_/g, (function(_) {return this.ar[this.i++];}).bind({ar: ["invoice", "id", 1337],i: 0}))

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