下面是我在NSString中使用的一些东西...
[NSString stringWithFormat:@"This is a digit %d", 10];
当数字为10时,它将写入%d中...,并且字符串将变成“This is a digit 10”。在JavaScript中是否有类似的功能?谢谢...另外,我想知道这是什么调用?
下面是我在NSString中使用的一些东西...
[NSString stringWithFormat:@"This is a digit %d", 10];
当数字为10时,它将写入%d中...,并且字符串将变成“This is a digit 10”。在JavaScript中是否有类似的功能?谢谢...另外,我想知道这是什么调用?
var str = "This is a digit " + 10;
这是通过正则表达式实现的。
http://www.regular-expressions.info/javascript.html 这是一个非常好的网站,涉及到此话题,请参考“Replacement Text Syntax”一节。
这是我找到的一个简单的sprintf实现。它是作为Angular过滤器构建的,但逻辑当然可以被提取出来。
https://gist.github.com/jakobloekke/7303217
angular.module('filters')
.filter('sprintf', function() {
function parse(str) {
var args = [].slice.call(arguments, 1),
i = 0;
return str.replace(/%d/g, function() {
return args[i++];
});
}
return function() {
return parse(
Array.prototype.slice.call(arguments, 0,1)[0],
Array.prototype.slice.call(arguments, 1)
);
};
});
使用方法:
$filter('sprintf')(
"Hello %d. It's %d nice to see you!",
"World",
"very"
);
或者
scope.values = ["World", "very"];
<p ng-bind="message | sprintf: values"></p>
现在,我们有模板字符串,它们可以完成非常类似的事情。它们的工作方式如下:
var message = "Hello world"
console.log(`This is my message: ${message}. Don't you love it?`)
模板字面量是由 `` 定义的,并使用 ${var} 包含变量。
console.log ("This is my message: " + message + ". Don't you love it?")
没有什么区别。格式化的整个重点(由我熟悉的 Delphi 例程 Format (...
实现)在于您的格式化字符串变得更加易读。Log ('My name is %s %s and I am %d years old', [FirstName, SecondName, Age])
比 Log ('My name is ' + FirstName + ' ' + SecondName + ' and I am ' + IntToStr (Age) + ' years old')
更加友好。 - rossmcmbob.js JS框架 允许做到这一点:
var sFormat = "My name is {0} and I am version {1}.0.";
var result = bob.string.formatString(sFormat, "Bob", 1);
console.log(result);
//output:
//==========
// My name is Bob and I am version 1.0.
- Tengiz