在寫 lua debugger 的時候,我需要判斷乙個字串的字首是不是 程式設計客棧"@" 。
有三個方案:
1.比較直觀的是 string.sub(str,1,1) == "@"
2.感覺效率比較高的是 string.byte(str) == 64
3.或者是 string.find(str,"@") == 1
我推薦第三種。(注:在此特定運用環境下。因為用於判定 source 的檔名,大多數情況都是 @ 開頭。如果結果為非,則效能較低)
第一www.cppcns.com方案 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
本文標題: lua判斷字串字首是否為指定字元的3種方法
本文位址:
判斷字串是否為空
判斷字串是否為空是在 android 開發中是最長用的乙個判斷,判斷時也經常會看到有不同的判斷方式,今天專門研究了一下,記錄下來。先定義乙個字串,private string s 這種定義方式是我們學用的方式,那麼這樣定義時在字串時,該怎麼判斷它是不是空呢?來用 驗證一下 if s null els...
判斷字串是否為回文串
題目 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false字串轉為小寫字串從字串開始和...
判斷指定字串是否為合法括號配對串
public boolean isvalid string s if chas i count 0 if chas i return count 0 高階 已知乙個字串都是由左括號 和右括號 組成,返回最長有效括號子串的長度 如 當求dp 5 的時候,看arr i 1 dp 4 的值,為 dp 5 ...