iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0

今天我們要了解什麼是stringtostringloadstring


1. string

這個不是字串喔! 這是字串的函式,因為我們有的時候需要對字串做一些更改或增減,這時就會需要這項特殊函式。

現在先列出所有的函式 (沒有事件)
byte(字串, 位置): 會回傳所給予字串的第幾個位置的字元在ASCII table的編號,舉例就像G這個字元的編號就是71,詳細的可以到這個網站參照各字元的值
char(數字): 會回傳所給予數字在ASCII table所對應的字元,舉例就像輸入71這個數值,就會回傳G這個字元 (就是byte反過來的意思)
find(字串1, 字串2, 數字): 會回傳在字串1裡面找到字串2的位置,會從所給予數字的位置開始找,若給予的字串為多個字元組成,則會以第一個字元為第一項,舉例來說,使用find("Grosstofu", "to", 1)這項指令,會回傳6
format(字串): 可以讓你透過類似C++的字串組合來組合所給予的字串,舉例就像format("Hello! My name is %s", "Grosstofu")就可以輸出"Hello! My name is Grosstofu",%s代表字串 %d代表整數 %f代表浮點數
match(字串1, 字串2, 數字): 在字串1裡面找有沒有出現字串2,有的話就回傳字串2,沒有就回傳nil,會從所給予的數字位置開始搜尋,並只會搜尋一次
gmatch(字串1, 字串2): 會回傳一項函式,會使用字串2的過濾方法找到字串1裡面所有符合的值,詳細的過濾方法在這個論壇可以找到,如果不使用過濾方法,純粹放入字串則會直接找是否有在字串1裡面與字串2符合的位置並回傳
gsub(字串1, 字串2, 字串3): gmatch的進階方法,他會直接回傳取代過後的值,舉例來說,我們使用string.gsub("Grosstofu", "r", "C")這項指令,所回傳的結果就會是將Grosstofu裡面的r取代為C,所以就會變成GCosstofu
len(字串): 回傳字串的長度
lower(字串): 將字串全部改為小寫
upper(字串): 將字串全部改為大寫
rep(字串, 數字): 回傳所給予字串的重複副本,重複次數為所給予數字
reverse(字串): 回傳字串的前後翻轉,像是Grosstofu會變成ufotssorG
split(字串1, 字串2): 回傳一項字典,該字典會包含所給予字串1透過字串2分裂過的結果,舉例就像split("Grosstofu", "o")會回傳{[1] = "Gr", [2] = "sst", [3] = "fu"}
sub(字串1, 數字1, 數字2): 會回傳字串1從數字1位置開始,第數字2位置前的所有字元,數字2可以是負數,若為負數則是從字串1的後面開始


2. tostring

這個就比較簡單了,這項函式可以將所給予的變數轉換為字串,舉例就像

local s = 1 --看的出來這個是數字,不是字串
local stostring = tostring(s) --現在我們用這個函式,把數字1變成字串1

雖然這樣看起來是沒有任何差別,但字串與數字是無法相加的,所以要把字串相加的話就要使用此函式,舉例就如同這項字串 "我今年17歲",這個17是字串形式的數字,所以你不能把他跟數字做相加

當然我們也可以將字串轉換為數字,就是反過來的tonumber (反過來的意思我就不講解了)


3. loadstring

loadstring的這項函是比較特別,首先,如果要使用的話,我們要先將ServerScriptService裡面的LoadStringEnabled的值改為true
https://ithelp.ithome.com.tw/upload/images/20250906/20169664ibFJ7AR6Ig.png

所以這個函式到底是幹嘛的呢? 這項函式可以將我們所給予的字串直接轉換為指令,例如說我們輸入"print(1)",他原本只會是一個字串,但透過這項函式就可以把它轉換為指令,請記住,這項函式非常危險,不要輕易地使用


上一篇
Day 25: RunService
下一篇
Day 27: 隊伍系統
系列文
透過Roblox Studio學習Lua語言與基本程式邏輯30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言