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?
Antworten
Zu viele Anzeigen?
Julian Jelfs
Punkte
473
Feng
Punkte
397
Hier ist meine Version, die in der Lage ist, '{' zu entkommen und diese nicht zugewiesenen Platzhalter zu bereinigen.
function getStringFormatPlaceHolderRegEx(placeHolderIndex) {
return new RegExp('({)?\\{' + placeHolderIndex + '\\}(?!})', 'gm')
}
function cleanStringFormatResult(txt) {
if (txt == null) return "";
return txt.replace(getStringFormatPlaceHolderRegEx("\\d+"), "");
}
String.prototype.format = function () {
var txt = this.toString();
for (var i = 0; i < arguments.length; i++) {
var exp = getStringFormatPlaceHolderRegEx(i);
txt = txt.replace(exp, (arguments[i] == null ? "" : arguments[i]));
}
return cleanStringFormatResult(txt);
}
String.format = function () {
var s = arguments[0];
if (s == null) return "";
for (var i = 0; i < arguments.length - 1; i++) {
var reg = getStringFormatPlaceHolderRegEx(i);
s = s.replace(reg, (arguments[i + 1] == null ? "" : arguments[i + 1]));
}
return cleanStringFormatResult(s);
}
Skystrider
Punkte
349
Die folgende Antwort ist wahrscheinlich die effizienteste, hat aber den Nachteil, dass sie nur für 1:1-Zuordnungen von Argumenten geeignet ist. Sie verwendet die schnellste Art der Verkettung von Zeichenketten (ähnlich wie ein Stringbuilder: Array von Zeichenketten, verbunden). Dies ist mein eigener Code. Wahrscheinlich braucht er ein besseres Trennzeichen.
String.format = function(str, args)
{
var t = str.split('~');
var sb = [t[0]];
for(var i = 0; i < args.length; i++){
sb.push(args[i]);
sb.push(t[i+1]);
}
return sb.join("");
}
Verwenden Sie es wie:
alert(String.format("<a href='~'>~</a>", ["one", "two"]));
ilyaigpetrov
Punkte
3357
Arek Kostrzeba
Punkte
529
Jetzt können Sie Vorlage Literale :
var w = "the Word";
var num1 = 2;
var num2 = 3;
var long_multiline_string = `This is very long
multiline templete string. Putting somthing here:
${w}
I can even use expresion interpolation:
Two add three = ${num1 + num2}
or use Tagged template literals
You need to enclose string with the back-tick (\` \`)`;
console.log(long_multiline_string);