JavaScript function to format a string just like string.format in C#.

/**
 * Find and replaces a string (search) to another string (replacement) in given
 * string (str).
 *
 * Example:
 * replaceAll('This is a test string', 'is', 'X');
 * >> 'ThX X a test string'
 *
 * @param {string} str
 * @param {string} search
 * @param {string} replacement
 * @return {string}
 */
function replaceAll(str, search, replacement) {
    var fix = search.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
    return str.replace(new RegExp(fix, "g"), replacement);
}

/**
 * Formats a string just like string.format in C#.
 * https://docs.microsoft.com/en-us/dotnet/api/system.string.format
 *
 * Example:
 * formatString('Hello {0}', 'Tuana');
 * >> 'Hello Tuana'
 *
 * @return {string}
 */
function formatString() {
    if (arguments.length < 1) {
        return null;
    }

    var str = arguments[0];

    for (var i = 1; i < arguments.length; i++) {
        var placeHolder = "{" + (i - 1) + "}";
        str = replaceAll(str, placeHolder, arguments[i]);
    }

    return str;
}