Есть ли в Javascript что-то вроде% d? - PullRequest
5 голосов
/ 15 апреля 2011

Вот то, что я использовал в NSString ...

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

значение 10 перейдет в% d ...., и строка станет "Это цифра 10", есть лилюбая подобная вещь в JavaScript?Спасибо ... Кроме того, я хотел бы знать, что это за звонок ??

Ответы [ 8 ]

4 голосов
/ 15 апреля 2011

Вы можете легко объединять строки в Javascript:

  var str = "This is a digit " + 10;
4 голосов
/ 15 апреля 2011

Нет встроенного форматирования строки, но вы можете использовать библиотеку JavaScript, чтобы сделать то же самое: sprintf().

2 голосов
/ 15 апреля 2011

Чтобы достичь того же эффекта, вы можете просто сказать:

"This is a digit " + 10;

В качестве альтернативы, если вам нужно фактическое форматирование строки, вы можете взглянуть на javascript-printf-string-format .

1 голос
/ 15 апреля 2011

Это возможно с помощью регулярных выражений.

http://www.regular -expressions.info / javascript.html Это довольно хороший веб-сайт по данной теме, см. Раздел «Синтаксис замещающего текста».

1 голос
/ 15 апреля 2011

В javascript такого нет, но вы можете создать свой собственный printf .

0 голосов
/ 05 октября 2017

В настоящее время у нас есть строки шаблонов, которые выполняют очень похожую функцию.Они работают так:

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

Литералы шаблона идентифицируются путем `` их определения и использования $ {var} для включения переменных.

0 голосов
/ 10 февраля 2016

Вот простая реализация 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 голосов
/ 12 октября 2012

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.

- Тенгиз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...