字符串.JS格式

string.Format in JS

本文关键字:格式 JS 字符串      更新时间:2023-09-26

我正在尝试在JS中模拟c# string.Format()

为此,我有一个名为string的对象和一个名为Format()的函数作为参数传递,在可变函数中,一个带有占位符及其值的字符串。

一个例子应该是:

string.Format("{0} - {1}", "Hello", "World");

必须返回Hello - World

虽然,它给我的只是"{undefined} - {undefined}"。我正在使用全局修饰符来获取所有,但它不起作用。


var string = {
    Format: function() {
        var text = arguments[0];
        for (i = 1; i < arguments.length; i++) {
            var result = text.replace(/([0-9]+)/g, arguments["$1"]);
        }
        console.log(result);
    }
}

我的错误在哪里?

你总是从初始字符串开始(忽略之前的替换),并且你的函数的某些部分不清楚它应该如何工作。

这是一个基于你的总体想法的工作实现:

var string = {
  Format: function() {
    var args = arguments,
        result = args[0].replace(/([0-9]+)/g, function(s) { return args[+s+1] });
    console.log(result);
    return result;
  }
}

记录"{Hello} - {World}"

现在,假设你不想保留大括号,你也想确保你只替换大括号之间的数字,你可以这样做(不需要调试日志):

var string = {
    Format: function() {
        var args = arguments;
        return args[0].replace(/{([0-9]+)}/g, function(s) {
            return args[+s.slice(1,-1)+1]
        });
    }
}

返回"Hello - World"