Javascript有类似于%d的东西吗?

5

下面是我在NSString中使用的一些东西...

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

当数字为10时,它将写入%d中...,并且字符串将变成“This is a digit 10”。在JavaScript中是否有类似的功能?谢谢...另外,我想知道这是什么调用?


2
它被称为sprintf - Khez
1
可能是Javascript printf/string.format的重复问题。 - codymanix
8个回答

4

虽然没有内置的字符串格式化功能,但是你可以使用JavaScript库来实现同样的功能:sprintf()


4
您可以在Javascript中轻松地连接字符串:
  var str = "This is a digit " + 10;

2
为了达到相同的效果,您只需要说:
"This is a digit " + 10;

另外,如果你需要实际的字符串格式化,你可以看一下javascript-printf-string-format


1

在 JavaScript 中没有这样的东西,但是你可以构建自己的 printf


1

0

这是我找到的一个简单的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>

0

现在,我们有模板字符串,它们可以完成非常类似的事情。它们的工作方式如下:

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') 更加友好。 - rossmcm

0

bob.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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接