2415 Stimmen

JavaScript-Äquivalent zu printf/String.Format

Ich bin auf der Suche nach einem guten JavaScript-Äquivalent der C/PHP printf() oder für C#/Java-Programmierer, String.Format() ( IFormatProvider für .NET).

Meine Grundanforderung ist ein Tausendertrennzeichenformat für Zahlen für jetzt, aber etwas, das viele Kombinationen (einschließlich Daten) verarbeitet, wäre gut.

Ich weiß, dass Microsofts Ajax Bibliothek bietet eine Version von String.Format() aber wir wollen nicht den gesamten Overhead dieses Rahmens haben.

3voto

Lucas Breitembach Punkte 1087

Ein weiterer Vorschlag ist die Verwendung der String-Vorlage:

const getPathDadosCidades = (id: string) =>  `/clientes/${id}`

const getPathDadosCidades = (id: string, role: string) =>  `/clientes/${id}/roles/${role}`

3voto

Bovard Punkte 1105

Ich habe nicht gesehen pyformat in der Liste, also dachte ich, ich füge es hinzu:

console.log(pyformat( 'The {} {} jumped over the {}'
                , ['brown' ,'fox' ,'foobar']
                ))
console.log(pyformat('The {0} {1} jumped over the {1}'
                , ['brown' ,'fox' ,'foobar']
                ))
console.log(pyformat('The {color} {animal} jumped over the {thing}'
                , [] ,{color: 'brown' ,animal: 'fox' ,thing: 'foobaz'}
                ))

2voto

Raymond Powell Punkte 39

Zur Verwendung mit jQuery.ajax() Erfolgsfunktionen. Übergeben Sie nur ein einziges Argument und ersetzen Sie die Zeichenfolge durch die Eigenschaften dieses Objekts als {Eigenschaftsname}:

String.prototype.format = function () {
    var formatted = this;
    for (var prop in arguments[0]) {
        var regexp = new RegExp('\\{' + prop + '\\}', 'gi');
        formatted = formatted.replace(regexp, arguments[0][prop]);
    }
    return formatted;
};

Ejemplo:

var userInfo = ("Email: {Email} - Phone: {Phone}").format({ Email: "someone@somewhere.com", Phone: "123-123-1234" });

2voto

krichard Punkte 3579

Mit sprintf.js an Ort und Stelle - kann man ein kleines Format-Dingsbums machen

String.prototype.format = function(){
    var _args = arguments 
    Array.prototype.unshift.apply(_args,[this])
    return sprintf.apply(undefined,_args)
}   
// this gives you:
"{%1$s}{%2$s}".format("1", "0")
// {1}{0}

2voto

/**
 * Format string by replacing placeholders with value from element with
 * corresponsing index in `replacementArray`.
 * Replaces are made simultaneously, so that replacement values like
 * '{1}' will not mess up the function.
 *
 * Example 1:
 * ('{2} {1} {0}', ['three', 'two' ,'one']) -> 'one two three'
 *
 * Example 2:
 * ('{0}{1}', ['{1}', '{0}']) -> '{1}{0}'
 */
function stringFormat(formatString, replacementArray) {
    return formatString.replace(
        /\{(\d+)\}/g, // Matches placeholders, e.g. '{1}'
        function formatStringReplacer(match, placeholderIndex) {
            // Convert String to Number
            placeholderIndex = Number(placeholderIndex);

            // Make sure that index is within replacement array bounds
            if (placeholderIndex < 0 ||
                placeholderIndex > replacementArray.length - 1
            ) {
                return placeholderIndex;
            }

            // Replace placeholder with value from replacement array
            return replacementArray[placeholderIndex];
        }
    );
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X