Lua 最强大的特性之一就是它的字符串处理能力,它支持字符格式化输出,具有可扩展的模式匹配查找功能,以及一些实用的字符操作,例如查询、截取、替换和删除等字符串操作,这些字符串操作函数都封装在一个名为 string 的模块里。
Lua 里的字符索引是从 1 开始,索引值也可以是负数,这种情况将被解释成向后索引,从字符串末尾开始算起。
下面是 Lua 5.2 提供的字符串操作函数:
byte
函数 string.byte 把字符串里的第 i 个字符转为 ASCII 编码,默认是输出第一个字符的编码(只有一个参数的话),用法:
string.byte (s [, i [, j]])
例子:
print(string.byte("abc")) //echo:97print(string.byte("abc", 2))//echo:98
char
函数 string.char 是把一个 ASCII 编码转换为对应的字符,用法:
string.char (asc1, ...)
例子:
print(string.char(97)) //echo aprint(string.char(99, 100, 101)) //echo cde
dump
函数 string.dump 返回一个函数二进制形式的字符串,用法:
string.dump (function)
参数 function 是一个 Lua 函数:
function test() print("just a test") end print(string.dump(test))
函数 string.dump 实现了函数的序列化,函数可以很轻松的传递,并在其他作用域调用。函数 string.dump 出来的二进制字符串,可以用 load 函数反序列回来直接调用。
function test() print("just a test") end local sd = string.dump(test) print(sd) local ls = load(sd) print(ls) ls()
find
函数 string.find 查找字符串 s 里第一个符合查找字符 pattern 的位置,用法:
string.find (s, pattern [, init [, plain]])
如果找到了目标字符 pattern,则返回它的开始和结束位置:
start, end = string.find("just a test", "st") print(start, end)
如果没有找到,则返回 nil:
print(string.find("just a test", "dhq.me"))
format
函数 string.format 用于把字符串格式化输出,用法:
string.format (formatstring, ···)
print(string.format("%s is %d", "ten", 10))
上面例子里的 %s 表示字符串,%d 表示数字,它们是 Lua 的格式化输出符号。
string.format 函数的用法跟 C 语言里的 printf 函数类似,例如它可以像 printf 那样输出指定位数的数字:
Pi = 3.1415926 print(string.format("Pi is %.2f", Pi))
Lua 的字符格式化输出符号列表:
. 所有字符 %a 字母 %c 控制符 %d 数字 %D 非数字 %l 小写字母 %p 标点符号 %s 字符串 %u 大写字母 %w 字母数字 %x 十六进制数 %z 用 0 表示的字符
gmatch
函数 string.gmatch 会返回一个迭代函数,尅通过该函数遍历到一个字符串 s 中所有出现指定匹配模式 pattern 的地方,用法:
string.gmatch (s, pattern)
例如下面是找出字符串 s 里的所有单词:
s = "just a test" for w in string.gmatch(s, "%a+") do print(w) end
gsub
函数 string.gsub 用于全局字符串替换,字符串 s 里满足匹配模式 pattern 格式的字符都会被替换成 repl 参数的值,用法:
string.gsub (s, pattern, repl [, n])
例如:
print(string.gsub("just a test", "st", "*"))
匹配模式 pattern 可以是一个正则:
s = "num is 1234567890" print(string.gsub(s, "%d", "*"))
可在函数的最后加上一个可选参数 n,表示指定要替换的次数:
s = "sethook, setlocal, setmetatable, setupvalue, setuservalue" print(string.gsub(s, "s%a+", "S", 2))
len
函数 string.len 用于返回字符串 s 的长度,用法:
string.len (s)
例子:
print(string.len("abcdefg"))
lower
函数 string.lower 用于把字符串 s 里的字母转为小写,用法:
string.lower (s)
例如:
print(string.lower("AbCdEfG"))
match
函数 string.match 用于查找字符串 s 里第一个匹配对模式 pattern 的值,并返回匹配值,用法:
string.match (s, pattern [, init])
上面参数 init 是可选, 表示查找过程的起点, 默认从 1 开始:
print(string.match("just a test", "test"))
参数 patter 可以是一个正则模式:
t = "today is 2003-5-31" print(string.match(t, "%d+-%d+-%d+"))
如果 pattern 为空,则返回整个字符串;如果没匹配成功,则返回 nil。
print(string.match("abcdabcd", "a"))
rep
函数 string.rep 返回一个由分隔符 sep 隔开的重复(repeat)n 次字符 s 的字符串,用法:
string.rep (s, n [, sep])
print(string.rep("repeat", 3))
reverse
函数 string.reverse 用于倒转一个字符串 s 的排序,用法:
string.reverse (s)
例如:
print(string.reverse("reverse"))
sub
函数 string.sub 用于从字符串 s 里截取一个从第 i 个字符到第 j 个字符间的子字符串,用法:
string.sub (s, i [, j])
print(string.sub("abcdefg", 2, 5))
print(string.sub("abcdefg", -4, -2))
print(string.sub("abcdefg", 3))
upper
函数 string.upper 用于把字符串 s 里的字母转为大写,用法:
string.upper (s)
例如:
print(string.upper("AbCdEfG"))
本文向大家介绍Lua中的string库(字符串函数库)总结,包括了Lua中的string库(字符串函数库)总结的使用技巧和注意事项,需要的朋友参考一下 Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容。在Lua中操纵字符串的功能基本来自于string库。 字符串库中的一些函数是非常简单的: string.len(s)
2.3.5 字符串库 string 和数学库 math 一样,Python 还提供了字符串库 string,以支持更复杂的字符串操作。 为了使用 string 中的函数,必须先导入该模块。回忆一下,模块有两种导入方式: import string from string import * 它们的区别在于调用函数时是否需要加上模块名作为前缀。 模块 string 中的一些常用函数如下表所示: 函数
本文向大家介绍Lua编程示例(四):Lua标准库之表库、字符串库、系统库,包括了Lua编程示例(四):Lua标准库之表库、字符串库、系统库的使用技巧和注意事项,需要的朋友参考一下 运行结果:
本文向大家介绍Lua入门学习笔记,包括了Lua入门学习笔记的使用技巧和注意事项,需要的朋友参考一下 最近在使用Cocos2d-x + Lua来开发游戏。 游戏的主要逻辑将在Lua里写,之前没有接触过Lua,以下是我总结的入门笔记。 运算符 逻辑运算符 与:and 或:or 非:not 逻辑判断只有在false和nil时为假,其余均为真。 or和and会返回第一个断路的值。 Lua中没有C语言的三元
Rust 中有两种字符串类型:String 和 &str。 String 被存储为一个字节形式(Vec<u3>)的vector ,但确保一定是一个有效的 UTF-8 序列。String 是堆分配的,可增大且无上限。 &str 是一个指向有效 UTF-8 序列的切片(&[u8]),并可在用来查看 String 的内容,就如同 &[T] 是 Vec<T> 的全部或部分引用。(原文:&str is a
本文向大家介绍java学习笔记_关于字符串概述,包括了java学习笔记_关于字符串概述的使用技巧和注意事项,需要的朋友参考一下 一、String类 String类代表字符串,是由字符构成的一个序列。创建String对象的方法很简单,有以下几种: 1)用new来创建: 2) 不用new直接创建: 3) 可以用字符数组来创建一个字符串: String对象是不可变的,它们的值在创建后不能更改。Strin