我正在尝试将一些 JavaScript 代码从 MicrosoftAjax 移动到 JQuery。我在 MicrosoftAjax 中使用了流行的 .net 方法的 JavaScript 等效项,例如 String.format()、String.startsWith() 等。jQuery 中是否有等效项?
等效于 jQuery 中的 String.format
IT技术
javascript
jquery
string.format
2021-01-17 09:24:36
6个回答
ASP.NET AJAX的源代码可供您参考,因此您可以从中挑选并将要继续使用的部分包含在单独的 JS 文件中。或者,您可以将它们移植到 jQuery。
这是格式函数...
String.format = function() {
var s = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i + 1]);
}
return s;
}
这是endsWith和startsWith原型函数......
String.prototype.endsWith = function (suffix) {
return (this.substr(this.length - suffix.length) === suffix);
}
String.prototype.startsWith = function(prefix) {
return (this.substr(0, prefix.length) === prefix);
}
这是 Josh 发布的函数的一个更快/更简单(和原型)的变体:
String.prototype.format = String.prototype.f = function() {
var s = this,
i = arguments.length;
while (i--) {
s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]);
}
return s;
};
用法:
'Added {0} by {1} to your collection'.f(title, artist)
'Your balance is {0} USD'.f(77.7)
我经常使用它以将其别名为 just f
,但您也可以使用更详细的format
. 例如'Hello {0}!'.format(name)
上述许多函数(除了 Julian Jelfs 的)包含以下错误:
js> '{0} {0} {1} {2}'.format(3.14, 'a{2}bc', 'foo');
3.14 3.14 afoobc foo
或者,对于从参数列表末尾向后计数的变体:
js> '{0} {0} {1} {2}'.format(3.14, 'a{0}bc', 'foo');
3.14 3.14 a3.14bc foo
这是一个正确的函数。这是 Julian Jelfs 代码的原型变体,我把它弄得更紧了一点:
String.prototype.format = function () {
var args = arguments;
return this.replace(/\{(\d+)\}/g, function (m, n) { return args[n]; });
};
这是一个稍微更高级的版本,它允许您通过将大括号加倍来逃避大括号:
String.prototype.format = function () {
var args = arguments;
return this.replace(/\{\{|\}\}|\{(\d+)\}/g, function (m, n) {
if (m == "{{") { return "{"; }
if (m == "}}") { return "}"; }
return args[n];
});
};
这正常工作:
js> '{0} {{0}} {{{0}}} {1} {2}'.format(3.14, 'a{2}bc', 'foo');
3.14 {0} {3.14} a{2}bc foo
这是 Blair Mitchelmore 的另一个很好的实现,有很多不错的额外功能:https ://web.archive.org/web/20120315214858/http://blairmitchelmore.com/javascript/string.format
制作了一个将集合或数组作为参数的格式函数
用法:
format("i can speak {language} since i was {age}",{language:'javascript',age:10});
format("i can speak {0} since i was {1}",'javascript',10});
代码:
var format = function (str, col) {
col = typeof col === 'object' ? col : Array.prototype.slice.call(arguments, 1);
return str.replace(/\{\{|\}\}|\{(\w+)\}/g, function (m, n) {
if (m == "{{") { return "{"; }
if (m == "}}") { return "}"; }
return col[n];
});
};
其它你可能感兴趣的问题