国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Lua判斷字符串前綴是否為指定字符的3種方法

2024-07-21 23:04:38
字體:
來源:轉載
供稿:網友

在寫 lua debugger 的時候,我需要判斷一個字符串的前綴是不是 "@" 。

有三個方案:

1.比較直觀的是 string.sub(str,1,1) == "@"
2.感覺效率比較高的是 string.byte(str) == 64
3.或者是 string.find(str,"@") == 1

我推薦第三種。(注:在此特定運用環境下。因為用于判定 source 的文件名,大多數情況都是 @ 開頭。如果結果為非,則性能較低)

第一方案 string.sub 會在生成子串的時候做一次字符串 hash ,感覺效率會略微低一些。

第二方案效率應該是最好,但是需要記住 @ 的 ascii 碼 64 。如果前綴是多個字符也不適用。

性能對比測試:

復制代碼 代碼如下:

string.find(sb, "@") == 1 3.671
string.find(sb, "^@") ~= 1 3.735
string.byte(sa) == 64 2.14
string.char(string.byte(sb)) == "@" 4.375
string.sub(sb,1,1) == "@" 2.766
sb[1] == "@" 0.984

 

要想解決不以@開頭時的性能問題,可以改成這樣:

復制代碼 代碼如下:

string.find(str,"^@") == 1

 

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扎囊县| 鹤峰县| 乌拉特中旗| 汉沽区| 哈巴河县| 响水县| 余干县| 望奎县| 长武县| 尚志市| 泸定县| 泗洪县| 章丘市| 乐亭县| 曲沃县| 靖安县| 商水县| 东安县| 建始县| 凌源市| 桓仁| 沐川县| 齐齐哈尔市| 清原| 西和县| 临清市| 蒙自县| 彭阳县| 突泉县| 公主岭市| 临沭县| 平阳县| 沧州市| 正蓝旗| 巴青县| 长春市| 武汉市| 孟津县| 社旗县| 平武县| 襄垣县|