跳轉到內容

從壓縮包中程式設計 Gambas/函式

來自 Wikibooks,開放世界中的開放書籍

函式參考

[編輯 | 編輯原始碼]

字串函式

[編輯 | 編輯原始碼]
字元程式碼
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") 錯誤 “需要日期,但得到的是字串。”

不僅敏感,而且被冒犯了...

從 Zip 檔案中程式設計 Gambas
 ← 你知道嗎 函式 常量 → 
華夏公益教科書