簡體   English   中英

JS中的string.Format

[英]string.Format in JS

我正在嘗試在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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM