Lua字符串
- 字符串或串(String)是由数字、字母、下划线组成的一串字符
- Lua 语言中字符串可以使用以下三种方式来表示
- 单引号间的一串字符
- 双引号间的一串字符
- [[和]]间的一串字符
string11 = "Lua"
print("\"字符串 是\"", string11) -- "字符串 是" Lua
string22 = 'hello'
print("字符串是", string22) -- 字符串是 hello
string33 = [["Lua 学习"]]
print("字符串是", string33) -- 字符串是 "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 |
|
空字符(NULL) |
000 |
\ddd |
1到3位八进制数所代表的任意字符 |
三位八进制 |
\xhh |
1到2位十六进制所代表的任意字符 |
二位十六进制 |
字符串操作
-
string.upper(argument)
-
string.lower(argument)
string111 = "lUa"
print(string.upper(string111)) -- LUA
print(string.lower(string111)) -- lua
-
string.gsub(mainString,findString,replaceString,num)
- 在字符串中替换
- mainString为要替换的字符串
- findString 为被替换的字符
- replaceString 要替换的字符
- num 替换次数(可以忽略,则全部替换)
print(string.gsub("aaaaa", "a", "z", 4)) -- zzzza 4
-
string.find (str, substr, [init, [end]])
- 在一个指定的目标字符串中搜索指定的内容
- 第三个参数为索引,返回其具体位置。不存在则返回 nil
print(string.find("Hello Lua user", "Lua", 1)) -- 7 开始位置 9 结束位置
print(string.reverse("Lua")) -- auL
-
string.format(...)
- 返回一个类似printf的格式化字符串
- lua中字符串拼接“string.format”相对于“..”消耗较大
time = 2020
print(string.format("hello %s %d", "Lua", time)) -- hello Lua 2020
string1 = "Lua"
string2 = "Tutorial"
number1 = 10
number2 = 20
-- 基本字符串格式化
print(string.format("基本格式化 %s %s",string1,string2)) -- 基本格式化 Lua Tutorial
-- 日期格式化
date = 2; month = 1; year = 2014
print(string.format("日期格式化 %02d/%02d/%03d", date, month, year)) -- 日期格式化 02/01/2014
-- 十进制格式化
print(string.format("%.4f",1/3)) -- 0.3333
占位符 |
描述 |
%c |
接受一个数字, 并将其转化为ASCII码表中对应的字符 |
%d, %i |
接受一个数字并将其转化为有符号的整数格式 |
%o |
接受一个数字并将其转化为八进制数格式 |
%u |
接受一个数字并将其转化为无符号整数格式 |
%x |
接受一个数字并将其转化为十六进制数格式, 使用小写字母 |
%X |
接受一个数字并将其转化为十六进制数格式, 使用大写字母 |
%e |
接受一个数字并将其转化为科学记数法格式, 使用小写字母e |
%E |
接受一个数字并将其转化为科学记数法格式, 使用大写字母E |
%f |
接受一个数字并将其转化为浮点数格式 |
%g(%G) |
接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式 |
%q |
接受一个字符串并将其转化为可安全被Lua编译器读入的格式 |
%s |
接受一个字符串并按照给定的参数格式化该字符串 |
print(string.format("%c", 69)) -- E
print(string.format("%d%%", 100)) -- 100%
print(string.format("%05d", 2015)) -- 02015
print(string.format("%+04d", -2015)) -- -2015
print(string.format("%+04d", 2015)) -- +2015
print(string.format("%02d", 1)) ---01
print(string.format("%02d", 11)) ---11
print(string.format("%o", 9)) -- 11
print(string.format("%u", 52)) -- 52
print(string.format("%u", -1)) -- 18446744073709551615
print(string.format("%u", -65)) -- 18446744073709551551
print(string.format("%x", 47)) -- 2f
print(string.format("%X", 47)) -- 2F
print(string.format("%e", 1032000)) -- 1.032000e+006
print(string.format("%E", 1032000)) -- 1.032000E+006
print(string.format("%.5f", math.pi)) -- 3.14159
print(string.format("%.8f", 0.123456789)) -- 0.12345679 (这里可以看到第八位变成了9而不是8,其实是做了一个四舍五入操作)
print(string.format("%g", 4566000)) -- 4.566e+006
print(string.format("%q", "@##@~(*&^%$(a")) -- "@##@~(*&^%$(a"
print(string.format("\"%s\"", "Hello World")) -- "Hello World"
print(string.format("%.4s", "canglang")) -- cang
print(string.format("\"%8.4s", "canglang")) -- " cang
print(string.char(97,98,99,100)) -- abcd
-
string.byte(arg[,int])
- byte 转换字符为整数值(可以指定某个字符,默认第一个字符)
print(string.byte("ABCD",4)) -- 68
print(string.byte("ABCD")) -- 65
print(string.len("abc")) -- 3
print(string.rep("abcd",2)) -- abcdabcd
print("w"..".c") -- wc
网友评论