[英]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.