從壓縮包中程式設計 Gambas/函式
| 字元程式碼 | ||
| Asc | 返回字元的 ASCII 程式碼 | 每個字元都有一個 ASCII 程式碼,例如 Asc("A") 是 65。 |
| Chr | 從 ASCII 程式碼返回一個字元 | Chr(65) 是 "A"。Chr(32) 是空格。Chr(1) 是 Ctrl-A 在檢查是否按下了鍵時,請使用 Key["A"] 或 Key[Key.ShiftKey] 代替鍵盤上鍵的數字,而不是字元的數字。 |
| 字串的一部分 | ||
| Left | 字串的左邊部分 | Left("Hello", 4) 是 "Hell" |
| Mid | 字串的“中間”部分 Mid(String, StartingAt, HowLong) |
Mid("Gambas", 3, 2) 是 mb,因為它是從位置 3 開始且長度為 2 個字元的字串。 |
| Right | 字串的右邊部分 | Right("String", 4) 是 "ring" |
| 查詢和替換 | ||
| InStr | 第二個字串在第一個字串中的位置 InStr(String, LookFor) InStr(String, LookFor, StartingAt) |
InStr("Gambas is basic", "bas") 是 4,因為 bas 從位置 4 開始。 InStr("Gambas is basic", "bas", 6) 是 11,因為 InStr 只從位置 6 開始查詢 bas。 如果未找到字串,則返回 0。 InStr("Gambas is basic", "bas", -5) 是 11。-5 表示只從末尾開始查詢 5 個字元直到末尾,即位置 10,即第二個空格。請注意,最後一個字母 c 距離末尾不是 1 個字元。它就是末尾。i 距離末尾 1 個字元。 |
| Replace | 一個字串,其中每個出現的某些東西都被其他東西替換 Replace(String, LookFor, WithThis) |
Replace("Abracadabra", "a", "*") 是 Abr*c*d*br* Message( Replace(LetterText, "<name>", FirstName&" "&LastName) ) |
| Subst | 一個字串,其標記被其他字串替換 | Subst("Tell &1 to arrive at &2 PM", "Mark", "4") 是 "Tell Mark to arrive at 4 PM" |
| 更改大小寫 | ||
| UCase | 將字串轉換為大寫。 | UCase("gerard") 是 "GERARD" |
| LCase | 字串轉換為小寫 | LCase("GERARD") 是 "gerard" |
| 修整 | ||
| Trim | 兩端沒有空格的字串 | Trim(" Hello ") 是 "Hello" |
| LTrim | 左修整 從開頭刪除空格的字串 |
LTrim(" Hello") 是 "Hello" |
| RTrim | 右修整 從結尾刪除空格的字串 |
RTrim("Hello ") 是 "Hello" |
| 構建字串 | ||
| String | 由同一個字串重複多次組成的字串。 String(HowMany, WhichString) |
String(6, "*") 是 "******" String(2, "Gambas") 是 "GambasGambas" |
| Space | 一個空格字串 | Space(8) 是 8 個空格 |
| Quote | 帶引號的字串 UnQuote 函式會移除它們。 |
Quote("Hello,") & " she said." 是 "Hello," she said. |
| 其他 | ||
| Len | 字串的長度 | Len("Gambas is basic") 是 15 |
| Comp | 比較兩個字串 Comp(FirstString, SecondString) Comp(FirstString, SecondString, Mode) |
如果兩個字串相同,則返回 0。 如果第一個字串在字典中出現在第二個字串之後,則返回 +1 如果第一個字串在字典中出現在第二個字串之前,則返回 -1 如果 Comp(UserName, "Akiti", gb.IgnoreCase) = 0 Then Message("Welcome Akiti!") else Message("You’re not Akiti!") |
| Split | 一個由字串組成的陣列 Split(String, Separator) |
Dim z As String[] = Split("John,Mary,Paul,Gemma,Lucille,Hamish", ",") 字串在逗號處分割。 |
| 正數和負數 | ||
| Abs | 數字的絕對值 - 移除任何負號。 | Abs(7) = 7 Abs(-7) = 7 |
| Sgn | 數字的符號 (+, 0, –) | Sign(3.14) = +1 Sign(–6) = –1 Sign(0) = 0 |
| 轉換為整數 | ||
| Int | 數字的整數部分 負數向下取整;正數捨棄小數部分。 |
Int(3.2) = 3 Int(3.9) = 3 Int(6) = 6 Int(-7.2) = -8 Int(-7.9) = -8 |
| Round | 將數字四捨五入到最接近的整數或十的次方 例如,10^2 是 100,所以 Round(x,2) 是四捨五入到最接近的 100。 負數表示小數位數 |
Round(Pi, -2) = 3.14 Print Round(1972, 2) = 2000 |
| Frac | 數字的小數部分 日期的小數部分是時間。 |
Frac(3.14) = 0.14 Frac(Date(1999, 12, 13, 14, 20, 00)) = 0.597222222015 CDate(Frac(Date(1999, 12, 13, 14, 20, 00))) = 14:20:00 |
| Fix | 數字的整數部分 - 移除任何小數部分 | Fix(3.14) = 3 Fix(-3.14) = -3 |
| CInt | 轉換為整數 完全捨棄小數部分。 |
Int(3.2) = 3 Int(3.9) = 3 Int(6) = 6 Int(-7.2) = -7 Int(-7.9) = -7 |
| Floor | 向下取整到下一個最小的整數 | Floor(3.14) = 3 Floor(-3.14) = -4 |
| Ceil | 向上取整到下一個最大的整數 | Ceil(3.14) = 4 Ceil(-3.14) = 3 |
| 比較 | ||
| Max | 兩個數字中較大的一個 也適用於日期 |
Max(6,4) = 6 |
| Min | 兩個數字中較小的一個 也適用於日期 |
Min(6,4) = 4 |
| 增加和減少 | ||
| INC | 增加一個變數;與 x += 1 或 x = x+1 相同 這是一個過程而不是函式(沒有括號;它是動詞而不是名詞) |
INC x |
| DEC | 減少一個變數;與 x –= 1 或 x = x–1 相同 這是一個過程而不是函式。 |
DEC x |
空字串是 NULL。IsNull("") 是 True。IsNull("M") 是 False。
| IsAscii | 測試字串是否僅包含 ASCII 字元。 |
| IsBlank | 測試字串是否僅包含空白字元。 |
| IsDigit | 測試字串是否僅包含數字。 |
| IsHexa | 測試字串是否僅包含十六進位制數字。 |
| IsLCase | 測試字串是否僅包含小寫字母。 |
| IsLetter | 測試字串是否僅包含字母。 |
| IsPunct | 測試字串是否僅包含可列印的非字母數字字元。 |
| IsSpace | 測試字串是否僅包含空格字元。 |
| IsUCase | 測試字串是否僅包含大寫字母。 |
| Randomize | 沒有它,每次執行程式時您都會得到相同的隨機數序列。 | Randomize 只用這個詞本身。 |
| Rand | 兩個數字之間的隨機整數。 | Rand(1,6) 是 1 到 6(包括 1 和 6)之間的隨機數。這可以是骰子擲出的結果。 Rand(1,2) 是 1 或 2 之一。 |
| Rnd | 一個隨機浮點數。 | Rnd( ) 在 0 到 1 之間 Rnd(9) 在 0 到 9 之間,但永遠不會是 9 本身。 Rnd(10, 20) 在 10 到 20 之間,但永遠不會是 20。 |
給定的日期和時間在內部儲存為兩個整數,第一個是日期,第二個是時間。以下示例可能會解釋您對日期和時間可以做什麼。
示例
| Now | 07/08/2019 19:18:54.929 | 2019 年 7 月 8 日,晚上 8:19 左右 當前日期和時間 |
| Format(Now, "dddd dd/mm/yyyy hh:nn:ss") | 星期二 09/07/2019 20:45:13 | 關於 Format() 函式的更多資訊將在後面介紹。您可以使用它以您想要的方式顯示日期和/或時間,或者任何數字。順便說一下,現在是 7 月 9 日下午 8:46。 |
| Date() | 07/07/2019 23:00:00 | 今天開始的時間,減去一個小時的夏令時。 |
| Date(1955, 6, 1) | 05/31/1955 23:00:00 | 某人的生日,減去一個小時的夏令時。日期由年、月、日組成。 |
| Date(2019, 12, 25, 6, 15, 0) | 12/25/2019 05:15:00 | 2019 年 12 月 25 日上午 6:15。開啟聖誕禮物的時間到了。 年、月、日、時、分、秒 |
| DateAdd(Date(1955, 6, 1), gb.Day, 14) | 06/14/1955 23:00:00 | 1955 年 6 月 1 日後的 14 天。再次減去一個小時的夏令時。 除了天數外,您還可以新增其他內容 gb.Second, gb.Minute, gb.Hour, gb.Day, gb.Week, gb.WeekDay (忽略星期六和星期日) gb.Month, gb.Quarter, gb.Year |
| DateDiff(Date(2019, 7, 6), Date(Now), gb.Day) | 2 | 兩天前到現在的天數 |
| DateDiff(Date(Now), Date(2018, 12, 25), gb.Day) | 195 | 聖誕節至今的天數? (現在是 2019 年。上一個聖誕節是 2018 年。) DateDiff(RecentDate, PastDate, Units) |
| DateDiff(Date(Now), Date(2019, 12, 25), gb.Day) | 170 | 離聖誕節還有多少天? (現在是 2019 年。) |
| DateDiff(Date(1955, 6, 1), Now, gb.Second) | 2022959392 | 我活了多少秒 |
| DateDiff(Date(1955, 6, 1), Now, gb.Day) | 23413 | 我活了多少天 |
| CLong(DateDiff(Date(1955, 6, 1), Now, gb.Minute)) * 72 | 2427551928 ... 不,等等,是 2427552144 ... 不,等等,是 2427552216 ... | 我出生以來有多少次心跳。 必須將 DateDiff 轉換為長整數,因為如果沒有它,就會出現溢位問題:它顯示為負數。長整數可以容納非常大的數字。 |
| 日期和時間的各個部分 | ||
| Hour(Now) & " hrs " & Minute(Now) & " mins" | 14 hrs 39 mins | 現在是下午 2:39。 您還可以使用這些 Day(), Hour(), Minute(), Month() Second(), Time(), Week(), Weekday() Year() |
| "Rip van Winkle, this is " & Year(Now) | Rip van Winkle, this is 2019 | 日期的年份部分 |
| WeekDay(Now) | 2 | 0 = 星期日,6 = 星期六 2 表示今天是星期二。 |
| 如果 WeekDay(Now) = gb.Tuesday 則 label1.text = "今天是星期二。" 否則 label1.text = "今天不是星期二。" | 今天是星期二。 | gb.Tuesday 是一個值為 2 的常量。使用常量意味著您無需記住星期二是 2。 其他還有 gb.Monday, gb.Wednesday, gb.Thursday, gb.Friday, gb.Saturday 和 gb.Sunday |
| Time(Now) | 14:58:44.654 | 日期的時間部分(Now 是當前日期和時間) |
| Time(14, 08, 25) | 14:08:25 | 從其各個部分組裝時間 Time(Hour, Minutes, Seconds) |
| Time() | 15:05:09.515 | 現在的準確時間 |
| 轉換 | ||
| Val("1/6/55") | 05/31/1955 23:00:00 | 將字串轉換為日期 1 小時的差額是由於夏令時造成的。 |
| Val("1/6/55 2:00") | 06/01/1955 01:00:00 | 1955 年 6 月 1 日凌晨 2:00 1 小時的差額是由於夏令時造成的。 |
| Val("1-6-55 2:00") | 無 | 對格式非常敏感… 被忽略 |
| Str(2484515) | 2484515 | 如果您提供一個數字,Str() 將將該數字轉換為字串。 |
| Dim D As Date = 2484515 label1.text = Str(D) |
16/05/2002 01:00:00 | 該數字已更改為日期。 Str() 將其轉換為本地日期格式 |
| Dim D As Date = 2484515 label1.text = D |
05/16/2002 | 美國日期格式 |
| CDate("1-6-55 2:00") | 錯誤 | “需要日期,但得到的是字串。” 不僅敏感,而且被冒犯了... |