【发布时间】:2014-05-13 12:12:17
【问题描述】:
C# 的String.Format 方法允许您保留“用指定对象的字符串表示形式替换指定字符串中的一个或多个格式项。”
string text = "select {0},{1},{2} from {3} where {4};"
var result = String.Format(text, "col1","col2","col3","table","col1 > 10");
这个结果看起来像
select col1,col2, col3 from table where col1 > 10;
我也在 JavaScript 中使用类似的函数,看起来像这样。
this.FormatString = 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;
};
我的问题是有什么方法可以使用逻辑名称作为占位符,而不是使用数字占位符回复。
所以不要使用
string text = "select {0},{1},{2} from {3} where {4};"
我要使用
string text = "select {Column List} from {TableName} where {Where Clause};"
我知道,与允许用户传递 N 个参数(或创建 N 个占位符)的数字占位符相比,使用逻辑名称作为占位符并不通用。
我正在寻找使用 JavaScript 或任何基于 JavaScript 的库的解决方案。
【问题讨论】:
-
仅供参考:ECMAScript 6 已内置模板字符串:tc39wiki.calculist.org/es6/template-strings。如果你在 JavaScript 之上使用 TypeScript,你已经可以使用这个功能了。
标签: javascript jquery node.js angularjs