定义:
```
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的命令
- 系统命令
- 目标函数
- 命令
- 被禁用的命令
- 宏条件
- 装备物品编号