Javascript有类似%d的东西吗?

时间:2011-04-15 15:37:01

标签: javascript string

这是我在NSString中使用的东西......

[NSString stringWithFormat:@"This is a digit %d", 10];

10值将转到%d ....,字符串将变为“这是一个数字10”,javascript中是否有类似的东西?谢谢...另外,我想知道,这是什么电话?

8 个答案:

答案 0 :(得分:4)

没有内置字符串格式,但您可以使用JavaScript库执行相同操作:sprintf()

答案 1 :(得分:4)

您可以在Javascript中轻松连接字符串:

  var str = "This is a digit " + 10;

答案 2 :(得分:2)

为了达到同样的效果,你可以说:

"This is a digit " + 10;

或者,如果您需要实际的字符串格式,您可能需要查看javascript-printf-string-format

答案 3 :(得分:1)

javascript中没有此类内容,但您可以构建your own printf

答案 4 :(得分:1)

这可以使用正则表达式。

http://www.regular-expressions.info/javascript.html这是一个相当不错的主题网站,请参阅“替换文字语法”一节。

答案 5 :(得分:0)

bob.js JS framework允许这样做:

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.

- 坦吉斯

答案 6 :(得分:0)

这是我发现的一个简单的sprintf实现。它是作为角度滤波器构建的,但逻辑当然可以拉出来。

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>

答案 7 :(得分:0)

如今,我们有模板字符串,它完成了非常相似的事情。他们的工作方式如下:

var message = "Hello world"
console.log(`This is my message: ${message}. Don't you love it?`)

模板文字由``定义它们并使用$ {var}包含变量来识别。