Lua字符串

字符串

字符串或串(string)是由数字、字母、下划线组成的一串字符
有三种方式表达:

单引号的一串字符    string1 = 'Lua'
双引号间一串字符    string1 = "Lua"
[[和]]间一串字符    string = [["Lua"]]

转义字符

转义字符    含义                                                      ASCII码值(10进制)
\a               响铃(BEL)                                             007
\b               退格(BS),将当前位置移到前一列          008
\f                换页(FF),将当前位置移到下页开头       012
\n               换行(LF),将当前位置移到下一行开头    010
\r                回车(CR),将当前位置移到本行开头      013
\t                水平指标(HT),(调用下一个TAB位置)     009
\v               垂直指标(VT)                                         011   
\\                反斜杠字符"\"                                         092
\'                单引号                                                    039
\"                双引号                                                   034
\0               空字符(NULL)                                        000
\ddd           1到3位八进制数所代表的任意字符        三为八进制
\xhh           1到2位十六进制所代表的任意字符         二为十六进制

字符串操作

--API
string.upper(argument):           字符串全部转为大写字母
string.lower(argument):            字符串全部转为小写字母
string.gsub(main String,find String,replace String,num)  
在字符串中替换,mainString为要替换的字符串,find String 为被替换的字符,replace String 要替换的字符,num替换次数(可以忽略,则全部替换)
string.find(str,substr,[init,[end]])      在指定的目标字符串中搜索指定的内容(第三参数为索引),返回其具体位置,不存在则返回nil
string.reverse(arg)                    字符串倒序
string.format(...)                        类似print格式化字符串
string.char(arg)和string.byte(arg[,int])        char 将整型数字转成字符并连接,byte转换字符为整数值(可以指定某一个字符,默认第一个)
string.len("String")                    计算字符串长度
string.rep("String",n)                 返回字符串string的n的拷贝
..                                               连接连个字符串
string.gmatch(str,pattern)         回一个迭代函数,每一调用这个函数,返回一个字符串str找到的下一个符合pattern 描述的子串.如果参数pattern没有找到,返回nuil
string.match(str,pattern,init)      只寻找源子串str中的第一个配对,参数init可选,指定搜寻起点,默认为1
成功配对到,返回所有配对结果;如果没有设置捕获标记,则返回真个配对字符串,没有成功返回nil.

字符串格式化

%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)小数位/字符串才裁剪:在宽度数值后增减的小数部分n,若后接着f(浮点数转义符,如%6.3f)则设定该浮点数的小数只保留n位,若后接s(字符转义,如%5.3s)则设定该字符串只显示前n位

匹配模式

lua中匹配模式直接用常规的字符串来描述.用于模式匹配函数 string.find, string.gmatch, string.gsub, string.match。

单个字符(除 ^$()%.[]*+-? 外): 与该字符自身配对
.(点): 与任何字符配对
%a: 与任何字母配对
%c: 与任何控制符配对(例如\n)
%d: 与任何数字配对
%l: 与任何小写字母配对
%p: 与任何标点(punctuation)配对
%s: 与空白字符配对
%u: 与任何大写字母配对
%w: 与任何字母/数字配对
%x: 与任何十六进制数配对
%z: 与任何代表0的字符配对
%x(此处x是非字母非数字字符): 与字符x配对. 主要用来处理表达式中有功能的字符(^$()%.[]*+-?)的配对问题, 例如%%与%配对
[数个字符类]: 与任何[]中包含的字符类配对. 例如[%w_]与任何字母/数字, 或下划线符号(_)配对
[^数个字符类]: 与任何不包含在[]中的字符类配对. 例如[^%s]与任何非空白字符配对
当上述的字符类用大写书写时, 表示与非此字符类的任何字符配对. 例如, %S表示与任何非空白字符配对
'%%' 匹配字符 '%'


模式条目可以是:

单个字符类匹配该类别中任意单个字符;
单个字符类跟一个 '*', 将匹配零或多个该类的字符。 这个条目总是匹配尽可能长的串;
单个字符类跟一个 '+', 将匹配一或更多个该类的字符。 这个条目总是匹配尽可能长的串;
单个字符类跟一个 '-', 将匹配零或更多个该类的字符。 和 '*' 不同, 这个条目总是匹配尽可能短的串;
单个字符类跟一个 '?', 将匹配零或一个该类的字符。 只要有可能,它会匹配一个;
%n, 这里的 n 可以从 1 到 9; 这个条目匹配一个等于 n 号捕获物(后面有描述)的子串。
%bxy, 这里的 x 和 y 是两个明确的字符; 这个条目匹配以 x 开始 y 结束, 且其中 x 和 y 保持 平衡 的字符串。 意思是,如果从左到右读这个字符串,对每次读到一个 x 就 +1 ,读到一个 y 就 -1, 最终结束处的那个 y 是第一个记数到 0 的 y。 举个例子,条目 %b() 可以匹配到括号平衡的表达式。
%f[set], 指 边境模式; 这个条目会匹配到一个位于 set 内某个字符之前的一个空串, 且这个位置的前一个字符不属于 set 。 集合 set 的含义如前面所述。 匹配出的那个空串之开始和结束点的计算就看成该处有个字符 '\0' 一样。

模式:

模式 指一个模式条目的序列。 在模式最前面加上符号 '^' 将锚定从字符串的开始处做匹配。 在模式最后面加上符号 '$' 将使匹配过程锚定到字符串的结尾。 如果 '^' 和 '$' 出现在其它位置,它们均没有特殊含义,只表示自身。

捕获:

模式可以在内部用小括号括起一个子模式; 这些子模式被称为 捕获物。 当匹配成功时,由 捕获物 匹配到的字符串中的子串被保存起来用于未来的用途。 捕获物以它们左括号的次序来编号。
作为一个特例,空的捕获 () 将捕获到当前字符串的位置(它是一个数字)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 字符串或串(String)是由数字、字母、下划线组成的一串字符。 Lua 语言中字符串可以使用以下三种方式来表示:...
    谁说我是小小云阅读 389评论 0 0
  • 字符串或串(String)是由数字、字母、下划线组成的一串字符。 Lua 语言中字符串可以使用以下三种方式来表示:...
    谁说我是小小云阅读 579评论 0 0
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,781评论 0 38
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,055评论 0 7
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,380评论 0 5