2011-04-15 82 views
5

下面是我在的NSString用...Javascript有类似%d的东西吗?

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

的10值将转到%d ....和字符串将成为“这是一个数字10”,有没有类似的事情在JavaScript?谢谢...另外,我想知道,这是什么电话?

+2

它被称为[sprintf](http://www.diveintojavascript.com/projects/javascript-sprintf) – Khez 2011-04-15 15:38:25

回答

4

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

2

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

"This is a digit " + 10; 

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

4

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

var str = "This is a digit " + 10; 
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. 

- 吉兹

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> 
0

现在,我们有模板的字符串,其实现了非常类似的事情。他们的工作方式如下:

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

模板文字通过“定义它们并使用$ {var}来包含变量来标识。

相关问题