util.format()(在v0.5.3中添加)方法是util模塊的內置應用程序編程接口,類似於printf格式字符串,並使用第一個參數返回格式化的字符串。格式化的字符串包含零個或多個格式說明符,其中轉換並替換了相應的參數值。它用作調試工具是一種同步方法,因此,它可能會占用可觀的性能開銷,從而可能阻塞事件循環。建議不要在熱代碼路徑中使用此函數。
用法:
util.format(format[, ...args])
參數:該方法接受上述和以下所述的兩個參數:
-
格式:由<string>類型的說明符組成,類似於printf格式字符串。
-
args:這是參數的<string>類型列表。
支持的說明符包括:
- %%:它用一個百分號('%%'/'%')替換說明符,即使提供了該參數也不會消耗任何參數。
- %s (字符串):它將根據給定格式轉換除Object,BigInt和-0之外的所有值。使用util.inspect()檢查沒有用戶定義的toString函數的對象,並且BigInt值用n表示。
- %c(CSS):如果傳遞了任何CSS,則會跳過該CSS。通常,此說明符被忽略。
- %d (數字):它將根據給定格式轉換除Symbol和BigInt之外的所有值。
- %i (parseInt()):它解析一個<string>並返回一個整數,它用於除BigInt和Symbol之外的所有值。
- %f (parseFloat()):它解析一個字符串並返回一個浮點數,它用於除Symbols之外的所有值。
- %j (JSON):無需複雜的解析或翻譯,如果參數中包含循環引用,則將其替換為字符串“ [Circular]”。
- %o(對象):它是具有通用JavaScript對象格式的對象的字符串表示形式。與util.inspect()類似。它顯示了完整的對象以及不可枚舉的屬性和代理。
- %O(對象):與“%o”相似,但沒有選項,它不包含不可枚舉的屬性和代理。
返回值:它返回<string>類型的格式化字符串。
範例1:
文件名:index.js
// Node.js to demonstrate the
// util.format() method
// Import the util module
const util = require('util');
function fun1() {
var val1 = util.format('%s:%s:%s', 'abc');
// Returns:'foo:%s'
var val2 = util.format('%s:%s',
'abc', 'def', 'ghi', 'jkl');
// Returns:'foo:bar baz'
var val3 = util.format(10, 20, 30);
// Returns:'1 2 3'
var val4 = util.format('%%:%s:%d');
// Returns:'%% %s'
var val5 = util.format('%%:%s', 567);
// Returns:'%:567'
console.log(val1, '\n', val2, '\n',
val3, '\n', val4, '\n', val5);
}
// Function call
fun1();
使用以下命令運行index.js文件:
node index.js
輸出:
abc: :abc:def ghi jkl 10 20 30 %%:%s:%d %:567
範例2:
文件名:index.js
// Node.js program to demonstrate
// the util.format() method
// Import the util module
const util = require('util');
// Passing multiple values and
// -0 on string specifier
console.log("1.>", util.format(
'%%:%s', 'abc', 'def', -0));
// Passing multiple values
console.log("2.>", util.format(
'%%', 'abc', 'def', 'ghi'));
// Passing bigInt to string specifier
console.log("3.>", util.format('%s',
'abc', 94321321321223372036854775807));
// Creating and passing Object along
// with null prototype and a variable
console.log("4.>", util.format('%s',
'abc', Object.create(null,
{ [Symbol.toStringTag]:
{ value:'def' } })));
// Passing string to Number specifier
console.log("5.>", util.format('%d',
'abc', 94303685));
// Passing Symbol and Number to
// parseInt specifier
console.log("6.>", util.format(
'%i', '2020 year 2021, ', 'He was 40,'
, '10.33, ', '10, ', 10));
// Passing string and Numbers
// to parseFloat specifier
console.log("7.>", util.format('%f',
'94321321321.564000 year 6546',
'abc', 943036854775807));
// Passing JSON string and Nunber
// to JSON specifier
console.log("8.>", util.format('%j',
'{ "name":"John", "age":31, "city":"New York" }',
'abc', 943036854775807));
// Passing class, string, and Number
// to object specifier
console.log("9.>", util.format('%o',
class Bar { }, 'abc', 943036854775807));
// Passing class, string, and Number
// to Object specifier
console.log("10.>", util.format('%o:%d',
class Foo { get [Symbol.toStringTag]()
{ return 'abc'; } },
'abc',
943036854775807
));
// Random class
class randomClass { }
// Inspecting random class
console.log("11.>",
util.inspect(new randomClass()));
使用以下命令運行index.js文件:
node index.js
輸出:
1.> %:abc def -0 2.> % abc def ghi 3.> abc 9.432132132122338e+28 4.> abc [Object:null prototype] [def] {} 5.> NaN 94303685 6.> 2020 He was 40, 10.33, 10, 10 7.> 94321321321.564 abc 943036854775807 8.> "{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }" abc 943036854775807 9.> <ref *1> [Function:Bar] { [length]:0, [prototype]:Bar { [constructor]:[Circular *1] }, [name]:'Bar' } abc 943036854775807 10.> <ref *1> [Function:Foo] { [length]:0, [prototype]:Foo { [constructor]:[Circular *1], [Symbol(Symbol.toStringTag)]:[Getter] }, [name]:'Foo' }:NaN 943036854775807 11.> randomClass {}
條件:
- 如果沒有相應的參數傳遞給說明符,則不會替換它。
- 如果傳遞的參數數量超過了指定符的數量,則多餘的參數將被串聯到返回的字符串中。
- 如果‘values’不屬於格式字符串,並且其類型不是字符串,則使用util.inspect()方法對其進行格式化。
- 如果第一個參數沒有有效的格式說明符,則util.format()返回串聯的參數。
參考: https://nodejs.org/api/util.html#util_util_format_format_args
相關用法
- Node.js console.timeLog()用法及代碼示例
- Node.js GM whitePoint()用法及代碼示例
- Node.js GM thumbnail()用法及代碼示例
- Node.js GM threshold()用法及代碼示例
- Node.js GM sharpen()用法及代碼示例
- Node.js GM spread()用法及代碼示例
- Node.js GM modulate()用法及代碼示例
- Node.js GM monochrome()用法及代碼示例
- Node.js GM equalize()用法及代碼示例
- Node.js GM magnify()用法及代碼示例
- Node.js GM whiteThreshold()用法及代碼示例
- Node.js GM blur()用法及代碼示例
- Node.js GM write()用法及代碼示例
- Node.js GM charcoal()用法及代碼示例
- Node.js GM minify()用法及代碼示例
注:本文由純淨天空篩選整理自vikas_g大神的英文原創作品 Node.js util.format() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。