js 實現 C 的 format 方法

2022-01-18 01:17:00 字數 1325 閱讀 3941

#5樓 衝動

兄弟提出的問題。

其實我根本不會 c# 只是看到人家寫了個這種功能《js實現類似c#中的字串處理方法format()》

我看了下**,覺得思路繁瑣,所以簡化思路寫乙個一樣的功能的方法,和大家分享下思路。

先來看下**吧。

string.prototype.format = function(args) ]+)\}/g, function(str, key) );

}var str = "引數引數引數引數引數引數}引數";

console.log( str.format("001", "002") ); // 引數001引數002引數引數引數}引數

console.log( str.format(["001", "002"]) ); // 引數001引數002引數引數引數}引數

console.log( str.format([null, "", undefined, 1]) ); // 引數null引數引數undefined引數1引數引數}引數

console.log( str.format() ); // 引數引數引數引數呵呵引數引數

console.log( str.format() ); // 引數引數111引數引數呵呵引數}引數哈哈

console.log( str.format() ); // 引數引數undefined引數引數引數null引數}引數

**簡潔易懂,維護起來也很輕鬆,而且支援 3 種格式的引數替換。

但是也不是無懈可擊的,因為我的思路和原文完全相反。

思路是這樣的,利用正則匹配出字串內所有 這樣的格式字元,然後把 key 當作物件對應的key或者陣列對應的下標進行替換。

第一行  var _dic = typeof args === "object" ? args : arguments;  可以接受 3 種格式的資料。

多引數: arguments

陣列:

物件: {}

把這3種資料當作字典儲存在 _dic 變數裡。

下面正則替換替換函式裡,其實就是進行查字典操作。

return key in _dic ? _dic[key] : str;

如果 _dic[key] 對應資料存在,就替換,否則就返回原始資料。

因為 arguments,,{} 都可以當作字典來處理,所以就可用最簡單方法實現這種效果了。

同時缺陷也非常明確的暴露了,就是如果字串裡 這種引數非常多,但是替換的資料卻很少的時候,效能肯定不如他的方法。

但我覺得一般操作肯定都是引數對應進行替換的,這樣效能損耗就不用擔心了,因為對應了引數,損耗就是0。

反而比他那個多次正則替換來的快呢。

js 實現 C 的 format 方法

衝動 兄弟提出的問題。其實我根本不會 c 只是看到人家寫了個這種功能 js實現類似c 中的字串處理方法format 我看了下 覺得思路繁瑣,所以簡化思路寫乙個一樣的功能的方法,和大家分享下思路。先來看下 吧。string.prototype.format function args g,functi...

python的format方法使用詳解

從python2.6開始,新增了一種格式化字串的函式str.format 它增強了字串格式化的功能。基本語法是通過 和 來代替以前的 format方法可以接受無限個引數,位置可以不按順序。不指定format方法的關鍵字引數 format hello world 不設定指定位置,按預設順序 hello...

python中format 方法的使用

在python3中,字串格式化操作通過format 方法,format 方法擁有更多的功能,操作起來更加方便。該函式將字串當成乙個模板,通過傳入的引數進行格式化,並且使用大括號 作為特殊字元代替 不指定位置的時候,使用預設位置 不指定格式化位置,按照預設順序格式化 s i and i am lear...