Lua 字符串

字符串(String)是由数字、字母、下划线组成的一串字符

Lua 字符串表示方法

Lua 中字符串可以使用以下三种方式来表示:

  1. 单引号间的一串字符
  2. 双引号间的一串字符
  3. [[和]]间的一串字符

范例 : Lua 中三种字符串表示方法

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.


array = {"QQ", "Baidu",'Ali','Sina','Meituan'}

str1 = "简单教程是学习 Lua 语言最好的所在"
print("\"字符串 1 是\"",str1)
str2 = 'www.twle.cn'
print("字符串 2 是",str2)

str3 = [["Lua 教程"]]
print("字符串 3 是",str3)

运行以上 Lua 脚本,输出结果如下:

$ lua main.lua
"字符串 1 是"   简单教程是学习 Lua 语言最好的所在
字符串 2 是 www.twle.cn
字符串 3"Lua 教程"

转义字符

转义字符用于表示不能直接显示的字符,比如后退键,回车键等

例如在字符串转换双引号可以使用 "\""

下表列出了 Lua 中所有的转义字符

转义字符 意义 ASCII码值(十进制)
\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位十六进制所代表的任意字符 二位十六进制

Lua 中操作字符串的方法

Lua 提供了很多的方法来支持字符串的操作

  1. string.upper(argument)
    将字符串全部转为大写字母
  2. string.lower(argument)
    将字符串全部转为小写字母
  3. string.gsub(mainString,findString,replaceString,num)
    将字符串 mainString 的 字符串 findString 替换为字符串 replaceString num 为替换次数,如果忽略,默认为全部替换
    > string.gsub("aaaa","a","z",3);
    zzza    3
    
  4. string.find (str, substr, [init, [end]])
    返回在字符串 substr 在 str 中首次出现的位置 不存在则返回 nil
    > string.find("Hello Lua user", "Lua", 1)
    7   9
    
  5. string.reverse(arg)
    字符串反转
    > string.reverse("Lua")
    auL
    
  6. string.format(...)
    返回一个类似 printf 的格式化字符串
    > string.format("the value is:%d",4)
    the value is:4
    
  7. string.char(arg)
    将整型数字转成字符并拼接
    > string.char(66)
    B
    > string.char(97,98,99,100)
    abcd
    
  8. string.byte(arg[,int])char
    将字符转化为整数值。 int 用来指定某个字符,默认第一个字符
    > string.char(97,98,99,100)
    abcd
    > string.byte("ABCD",4)
    68
    > string.byte("ABCD")
    65
    
  9. string.len(arg)
    计算字符串长度
    > string.len("abc")
    3
    
  10. string.rep(string, n)
    返回字符串string的n个拷贝
    > string.rep("abcd",2)
    abcdabcd
    
  11. .. 操作符
    拼接两个字符串
    > "www.twle"..".com"
    www.twle.cn
    > print("www.twle"..".cn")
    www.twle.cn
    
  12. string.gmatch(str, pattern)
    返回一个迭代器函数 每次调用迭代器函数,返回一个在字符串 str 找到的下一个符合 pattern 描述的子串 如果参数 pattern 描述的字符串没有找到,迭代函数返回nil
    > for word in string.gmatch("Hello Lua user", "%a+") do print(word) end
    Hello
    Lua
    user
    
  13. string.match(str, pattern, init)
    只寻找源字串str中的第一个配对 参数init可选, 指定搜寻过程的起点, 默认为1 在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil
    > string.match("I have 2 questions for you.", "%d+ %a+")
    2 questions
    > string.format("%d, %q", string.match("I have 2 questions for you.", "(%d+) (%a+)"))
    2, "questions"
    

字符串大小写转换

以下范例演示了如何对字符串大小写进行转换:

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.

str1 = "Lua";
print(string.upper(str1))
print(string.lower(str1))

运行以上 Lua 脚本,输出结果如下:

$ lua main.lua
LUA
lua

字符串查找与反转

以下范例演示了如何对字符串进行查找与反转操作:

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.


string = "Lua Tutorial"
-- 查找字符串
print(string.find(string,"Tutorial"))
reversedString = string.reverse(string)
print("新字符串为",reversedString)

运行以上 Lua 脚本,输出结果如下:

$ lua main.lua
5   12
新字符串为   lairotuT auL

字符与整数相互转换

以下范例演示了字符与整数相互转换

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.

-- 字符转换
-- 转换第一个字符
print(string.byte("Lua"))
-- 转换第三个字符
print(string.byte("Lua",3))
-- 转换末尾第一个字符
print(string.byte("Lua",-1))
-- 第二个字符
print(string.byte("Lua",2))
-- 转换末尾第二个字符
print(string.byte("Lua",-2))

-- 整数 ASCII 码转换为字符
print(string.char(97))

运行以上 Lua 脚本,输出结果如下:

$ lua main.lua
76
97
97
117
117
a

其他常用函数

以下范例演示了其他字符串操作,如计算字符串长度,字符串连接,字符串复制等 string 函数

-- !/usr/bin/lua
-- -*- encoding:utf-8 -*-
-- filename: main.lua
-- author: 简单教程(www.twle.cn)
-- Copyright © 2015-2065 www.twle.cn. All rights reserved.

string1 = "www."
string2 = "twle"
string3 = ".com"
-- 使用 .. 进行字符串连接
print("连接字符串",string1..string2..string3)

-- 字符串长度
print("字符串长度 ",string.len(string2))

-- 字符串复制 2 次
repeatedString = string.rep(string2,2)
print(repeatedString)

运行以上 Lua 脚本,输出结果如下:

$ lua main.lua
连接字符串   www.twle.cn
字符串长度   4
twletwle
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.