定義:
```
string2='runoob.com' //runoob.com
string1="Lua" //Lua
string3=[["Lua 教程"]] //"Lua 教程"
```
### 字符串處理
```
//字符串的長度
string.len('abc')
//字符串大小寫轉換
string1="Lua";
string.upper(string1)
string.lower(string1)
//字符轉整數
string.byte(arg [,int]) 第二個是選擇轉的字符,省略則默認為第一個
a=string.byte("ABCD",1)
print(a) //65
b=string.byte("ABCD",4)
print(b) //68
c=string.byte("D")
print(c) //68
//將整型數字轉成字符并連接 :string.char(arg)
a=string.char(65,97,98,99,100)
print(a) //Aabcd
local start = "1"
local t = type(start)
if t == "string" then
start= tonumber(start) //判斷是string類型的話,轉為number
end
print(start) //1
local start = "32"
start= tonumber(start)
print(start) //32
local start = "b"
start= tonumber(start)
print(start) //nil
local start = "1b"
start= tonumber(start)
print(start) //nil
//字符串查找 :string.find默認情況下返回兩個值
string.find(源字符串, 待搜索模式串 [,起始位置 [, plain]] )
string="Lua Tutorial"
print(string.find(string,"Tutorial")) //3 12
a,b=string.find(string,"Tutorial")
print(a) //3
print(b) //12
//字符串替換
**string.gsub(源字符串,查找的字符,替換的字符,替換次數省略則全部替換)**
string.gsub("aaaa","a","b",3); //bbba
//字符串反轉
string="abc 123"
reversedString=string.reverse(string)
print("新字符串為",reversedString) //新字符串為 321 cba
拷貝n個string字符串:string.rep(string, n)
str=string.rep("ac",2)
print(str) //acac
str=string.rep("ac",3)
print(str) //acacac
//格式化字符串
a=string.format("the value is:%d",4)
print(a)
* %c - 接受一個數字, 并將其轉化為ASCII碼表中對應的字符
* %d, %i - 接受一個數字并將其轉化為有符號的整數格式
* %o - 接受一個數字并將其轉化為八進制數格式
* %u - 接受一個數字并將其轉化為無符號整數格式
* %x - 接受一個數字并將其轉化為十六進制數格式, 使用小寫字母
* %X - 接受一個數字并將其轉化為十六進制數格式, 使用大寫字母
* %e - 接受一個數字并將其轉化為科學記數法格式, 使用小寫字母e
* %E - 接受一個數字并將其轉化為科學記數法格式, 使用大寫字母E
* %f - 接受一個數字并將其轉化為浮點數格式
* %g(%G) - 接受一個數字并將其轉化為%e(%E, 對應%G)及%f中較短的一種格式
* %q - 接受一個字符串并將其轉化為可安全被Lua編譯器讀入的格式
* %s - 接受一個字符串并按照給定的參數格式化該字符串
為進一步細化格式, 可以在%號后添加參數. 參數將以如下的順序讀入:
* (1) 符號: 一個+號表示其后的數字轉義符將讓正數顯示正號. 默認情況下只有負數顯示符號.
* (2) 占位符: 一個0, 在后面指定了字串寬度時占位用. 不填時的默認占位符是空格.
* (3) 對齊標識: 在指定了字串寬度時, 默認為右對齊, 增加-號可以改為左對齊.
* (4) 寬度數值
* (5) 小數位數/字串裁切: 在寬度數值后增加的小數部分n, 若后接f(浮點數轉義符, 如%6.3f)則設定該浮點數的小數只保留n位, 若后接s(字符串轉義符, 如%5.3s)則設定該字符串只顯示前n位.
字符串匹配
string.gmatch(str, pattern) 返回一個迭代器函數,每一次調用這個函數,返回一個在字符串 str 找到的下一個符合 pattern 描述的子串。如果參數 pattern 描述的字符串沒有找到,迭代函數返回nil
一般是用于遍歷匹配
for key,value in string.gmatch("Hello Lua user", "%a+") do
print(value)
//
end
輸出:
Hello
Lua
user
```
## **匹配模式**
Lua 中的匹配模式直接用常規的字符串來描述。 它用于模式匹配函數string.find, string.gmatch, string.gsub, string.match
string.match(str, pattern, init):只尋找源字串str中的第一個配對. 參數init可選, 指定搜尋過程的起點, 默認為1
在成功配對時, 函數將返回配對表達式中的所有捕獲結果; 如果沒有設置捕獲標記, 則返回整個配對字符串. 當沒有成功的配對時, 返回nil
下面的表列出了Lua支持的所有字符類:
單個字符(除 ^$()%.\[\]\*+-? 外): 與該字符自身配對
* .(點): 與任何字符配對
* %a: 與任何字母配對
* %c: 與任何控制符配對(例如\\n)
* %d: 與任何數字配對
* %l: 與任何小寫字母配對
* %p: 與任何標點(punctuation)配對
* %s: 與空白字符配對
* %u: 與任何大寫字母配對
* %w: 與任何字母/數字配對
* %x: 與任何十六進制數配對
* %z: 與任何代表0的字符配對
* %x(此處x是非字母非數字字符): 與字符x配對. 主要用來處理表達式中有功能的字符(^$()%.\[\]\*+-?)的配對問題, 例如%%與%配對
* \[數個字符類\]: 與任何\[\]中包含的字符類配對. 例如\[%w\_\]與任何字母/數字, 或下劃線符號(\_)配對
* \[^數個字符類\]: 與任何不包含在\[\]中的字符類配對. 例如\[^%s\]與任何非空白字符配對
當上述的字符類用大寫書寫時, 表示與非此字符類的任何字符配對. 例如, %S表示與任何非空白字符配對.例如,'%A'非字母的字符:
~~~
> print(string.gsub("hello, up-down!", "%A", "."))
hello..up.down.????4
~~~
數字4不是字符串結果的一部分,他是gsub返回的第二個結果,代表發生替換的次數。
在模式匹配中有一些特殊字符,他們有特殊的意義,Lua中的特殊字符如下:
~~~
( ) . % + - * ? [ ^ $
~~~
'%' 用作特殊字符的轉義字符,因此 '%.' 匹配點;'%%' 匹配字符 '%'。轉義字符 '%'不僅可以用來轉義特殊字符,還可以用于所有的非字母的字符。
**模式條目可以是:**
* 單個字符類匹配該類別中任意單個字符;
* 單個字符類跟一個 '`*`', 將匹配零或多個該類的字符。 這個條目總是匹配盡可能長的串;
* 單個字符類跟一個 '`+`', 將匹配一或更多個該類的字符。 這個條目總是匹配盡可能長的串;
* 單個字符類跟一個 '`-`', 將匹配零或更多個該類的字符。 和 '`*`' 不同, 這個條目總是匹配盡可能短的串;
* 單個字符類跟一個 '`?`', 將匹配零或一個該類的字符。 只要有可能,它會匹配一個;
* `%*n*`, 這里的*n*可以從 1 到 9; 這個條目匹配一個等于*n*號捕獲物(后面有描述)的子串。
* `%b*xy*`, 這里的*x*和*y*是兩個明確的字符; 這個條目匹配以*x*開始*y*結束, 且其中*x*和*y*保持*平衡*的字符串。 意思是,如果從左到右讀這個字符串,對每次讀到一個*x*就*+1*,讀到一個*y*就*\-1*, 最終結束處的那個*y*是第一個記數到 0 的*y*。 舉個例子,條目`%b()`可以匹配到括號平衡的表達式。
* `%f[*set*]`, 指*邊境模式*; 這個條目會匹配到一個位于*set*內某個字符之前的一個空串, 且這個位置的前一個字符不屬于*set*。 集合*set*的含義如前面所述。 匹配出的那個空串之開始和結束點的計算就看成該處有個字符 '`\0`' 一樣。
**模式:**
*模式*指一個模式條目的序列。 在模式最前面加上符號 '`^`' 將錨定從字符串的開始處做匹配。 在模式最后面加上符號 '`$`' 將使匹配過程錨定到字符串的結尾。 如果 '`^`' 和 '`$`' 出現在其它位置,它們均沒有特殊含義,只表示自身。
**捕獲:**
模式可以在內部用小括號括起一個子模式; 這些子模式被稱為*捕獲物*。 當匹配成功時,由*捕獲物*匹配到的字符串中的子串被保存起來用于未來的用途。 捕獲物以它們左括號的次序來編號。 例如,對于模式`"(a*(.)%w(%s*))"`, 字符串中匹配到`"a*(.)%w(%s*)"`的部分保存在第一個捕獲物中 (因此是編號 1 ); 由 "`.`" 匹配到的字符是 2 號捕獲物, 匹配到 "`%s*`" 的那部分是 3 號。
作為一個特例,空的捕獲`()`將捕獲到當前字符串的位置(它是一個數字)。 例如,如果將模式`"()aa()"`作用到字符串`"flaaap"`上,將產生兩個捕獲物: 3 和 5 。
- 基礎
- 循環
- 迭代器
- ipairs與pairs 的區別
- 流程控制if
- 函數
- 運算符
- 字符串
- 數組
- table(表)
- 模塊與包
- 魔獸插件
- 初學介紹
- api
- Global API
- Widget API
- 窗口小部件類層次結構(Widget Class Hierarchy)
- 動畫(Animation)
- 透明度(Alpha)
- 線條縮放比例(LineScale)
- 平移(Translation)
- 線平移(Line Translation)
- 路徑(Path)
- 旋轉(Rotation)
- 縮放(Scale)
- 紋理坐標平移(TextureCoordTranslation)
- 框架 :Frame
- 瀏覽器(Browser)
- 按鍵(Button)
- Item按鈕(ItemButton)
- 檢查按鈕(CheckButton)
- 檢測(Checkout)
- 顏色選擇(ColorSelect)
- 冷卻(Cooldown)
- 編輯框(EditBox)
- 戰爭迷霧(FogOfWarFrame)
- 游戲工具提示(GameTooltip)
- 消息框(MessageFrame)
- 小地圖(Minimap)
- 模型(Model)
- 玩家模型(PlayerModel)
- 電影模型(CinematicModel)
- 換裝模型(DressUpModel)
- 戰袍模型(TabardModel)
- _模型場景(ModelScene)
- 電影Frame(MovieFrame)
- 根小部件(Root Widgets)
- UIObject衍生品(UIObject Derivatives)
- 動畫衍生品(Animation Derivatives)
- FontInstance
- 地區衍生品(Region Derivatives)
- 幀衍生品(Frame Derivatives)
- 特殊(Special)
- Events(游戲中變化的事件)
- WoWAPI
- Global Function Groups
- 帳戶(Account)
- 成就(Achievements)
- 動作條(Action Bars)
- Action Buttons
- 插件(AddOns)
- 冒險指南(Adventure Guide)
- 神器(Artifact)
- 拍賣行(Auction House)
- 黑市AH
- 魔獸代幣(WoW Tokens)
- Azerite
- 背包(Bags)
- 容器(Containers)
- 庫存(Inventory)
- 銀行(Bank)
- 公會銀行(Guild Bank)
- 理發店(Barber Shop)
- 書籍(書籍)
- 日歷(calendar)
- 相機(Camera)
- 頻道(Channels)
- 聊天窗口(Chat Window)
- 社區(communities)
- 語音聊天(Voice Chat)
- 推特(Twitter)
- 角色(Character)
- 角色表(Paper Doll)
- 試衣間(dressing room)
- 活動(Movement)
- 指定目標(Targeting)
- 死亡(Death)
- 過場動畫(Cinematics)
- 職業(class)
- 天賦(Talents)
- 收藏(Collections)
- 坐騎(Mount Journal)
- 寵物(Pet Journal)
- 玩具箱(Toy Box)
- 傳家寶(Heirlooms)
- 外觀(Appearances)
- 戰斗記錄(Combat Log)
- 戰斗寵物(Combat Pets)
- 同伴(Companions)
- Contribution Collection
- 貨幣(Currency)
- 光標(Cursor)
- 客戶支持(Customer Support)
- 知識庫(Knowledge Base)
- 設備管理器(Equipment Manager)
- 擴展(Expansions)
- FrameXML
- 好友(Friends)
- Who List
- 真實身份證(Real ID)
- 招募朋友(Recruit-a-Friend)
- 駐軍(Garrisons)
- 建筑物(Buildings)
- 戰利品(Trophies)
- 追隨者與任務(Followers & Missions)
- 團隊(Groups)
- Raid Groups
- Raid Profiles
- 組查找器(Group Finder)
- 突襲者(Raid Finder)
- 公會(Guild)
- 檢查(Inspection)
- Instances
- 場景(Scenarios)
- Mythic+
- 入侵(Invasions)
- 海島探險(Island Expeditions)
- Items
- 按鍵綁定(Key Bindings)
- Modifiers
- 劫掠(Looting)
- 失控(Loss of Control)
- 宏命令(Macros)
- 郵件(Mail)
- 地圖(Maps)
- 飛行管理員(Flight Master)
- 追蹤(Tracking)
- 商人(Merchant)
- 銘牌(Nameplates)
- 寵物大戰(Pet Battles)
- 申請書(Petitions)
- 專業(Professions)
- 考古(Archaeology)
- 附魔(Enchantments)
- 雕文(glyphs)
- 物品插口(tem Socketing)
- PvP
- 競技場(Arena)
- 戰場(Battlegrounds)
- 世界戰場(World Battlefields)
- 爭吵(Brawl)
- 戰爭游戲(War Games)
- 戰爭模式(War Mode)
- 任務 (Quests)
- 任務日志(Quest Log)
- 任務選擇(Quest Choices)
- Task Quests
- 閑聊(Gossip)
- 探險地圖(Adventure Map)
- 戰爭戰役(War Campaigns)
- 種族(Races)
- 境界(Realms)
- 報告(Reporting)
- 聲望(Reputation)
- 報廢的機器(Scrapping Machine)
- 法術(Spells)
- Spell Book
- 商店(Shop)
- 召喚(Summoning)
- 系統(System)
- 網絡(Network)
- 控制臺(Console)
- 日期時間(Date & Time)
- 調試(Debugging)
- 圖形(Graphics)
- 語言環境(Locales)
- 腳本分析(Script Profiling)
- 安全執行(Secure Execution)
- 聲音(Sound)
- Sound Drivers
- Talking Head
- 交易(Trading)
- 訓練師(Trainer)
- 遷移(Transmogrification)
- 空白存儲(Void Storage)
- 講解(Tutorials)
- UI對象(UI Objects)
- 框架(Frame)
- 字體(Font)
- 質地(Texture)
- 混合(Mixin)
- 咒語(SpellMixin)
- ItemMixin
- 物品位置(ItemLocationMixin)
- PlayerLocationMixin
- 模型場景(ModelScene)
- 未分類
- UI窗口小部件管理器(UI Widget Manager)
- 單位(Units)
- 光環(Auras)
- 玩家(Players)
- 實用程序(Util)
- 車輛(Vehicles)
- Classic Specific Functions
- 獵人寵物(Hunter Pets)
- 專業(Professions)
- 手工制作(Crafting)
- @PvP
- 模擬器
- 訓練師(Trainer)
- 8.x API
- 控制臺(Console)
- 召喚(Summoning)
- See also
- 外部鏈接(External links)
- Widget handlers(UI交互事件)
- ScriptObject
- AnimationGroup
- Animation對象
- Alpha對象
- Scale
- LineScale
- Translation
- LineTranslation
- Path
- Rotation
- TextureCoordTranslation
- Frame
- Browser
- Button
- CheckButton
- ItemButton
- Checkout
- ColorSelect
- Cooldown
- EditBox
- FogOfWarFrame
- GameTooltip
- Model
- PlayerModel
- CinematicModel
- DressupModel
- TabardModel
- MovieFrame
- ScrollFrame
- Slider
- MessageFrame
- Minimap
- ModelScene
- OffScreenFrame
- POIFrame
- ArchaeologyDigSiteFrame
- QuestPOIFrame
- ScenarioPOIFrame
- SimpleHTML
- StatusBar
- UnitPositionFrame
- WorldFrame
- 入門
- .toc
- .lua
- .xml
- 示例
- 自動邀請插件
- 完整例子:顯示任務坐標
- eCoordinates.toc
- eCoordinates.xml
- eCoordinates.lua
- 開發幫助組件
- AddOn Studio編輯器
- 暴雪自帶調試工具
- DevTools調試插件
- wowlua
- 魔獸宏
- 戰斗寵物命令
- 暴雪界面命令
- 聊天命令
- chat substitutions
- 角色指令
- 開發者工具
- 表情動作
- 戰斗命令
- 公會命令
- 小隊與團隊命令、
- 寵物命令
- PvP的命令
- 系統命令
- 目標函數
- 命令
- 被禁用的命令
- 宏條件
- 裝備物品編號