lua 中字符串的相关方法

  1. 表示方式
    str1 = "可以用双引号表示"
    str2 = '可以用单引号表示'
    str3 = [[
    <html>
    	<body>
    		<p>可以用双中括号来输出一串字符块</p>
    	</body>
    </html>
    ]]
    print(str1)
    print(str2)
    print(str3)
    
    
    --[[
    输出结果:
    
    可以用双引号表示
    可以用单引号表示
    <html>
    	<body>
    		<p>可以用双中括号来输出一串字符块</p>
    	</body>
    </html>
    
    ]]
  2. 转义字符:用于表示不能直接显示的字符
  3. string.upper(arg)   --将字符串全部转为大写字母
    print(string.upper("abcd789efgh"))		--ABCD789EFGH
  4. string.lower(arg)  --将字符串全部转为小写字母
    print(string.lower("AAA88BBB"))		--aaa88bbb
  5. string.gsub(str1,str2,str3,num)  --替换str1中的str2为str3,num为替换次数(可以忽略,则替换全部str2为str3)  返回替换后的字符串及替换次数
    str1 = "hello world hi hello she hello "
    print(string.gsub(str1,"hello","哈喽"))		--哈喽 world hi 哈喽 she 哈喽 	3
    print(string.gsub(str1,"hello","哈哈",2))	--哈哈 world hi 哈哈 she hello 	2
  6. string.find(str,substr,[init,[end]])  -- 在目标字符串中查找指定内容,返回具体位置(开始下标及截止下标),不存在返回nil
    str = "hello world hello lua hello my"
    print(string.find(str,"hello"))			--1	5   (从str第一个字符开始查找,返回找到的第一个匹配的起始下标)
    print(string.find(str,"hello",10))		--13	17   (从str第10个字符开始查找,返回找到的第一个匹配的起始下标)
    print(string.find(str,"hellow"))		--nil	(不存在则返回 nil)
  7. string.reverse(arg)  --字符串反转
    print(string.reverse("aabbccd"))		--dccbbaa
  8. string.format(...)  -- 字符串格式化
    print(string.format("接收一个数字,并将其转化为AsCII码表中对应的字符:%c",65))	-- 65 --> A
    print(string.format("接受一个数字并将其转化为有符号的整数格式:%d",65))			-- 65 --> 65  (%d 和 %i 一样)
    print(string.format("接受一个数字并将其转化为有符号的整数格式:%+d",65))		-- 65 --> +65  (正数时会带上+)
    print(string.format("接受一个数字并将其转化为有符号的整数格式:%05d",65))		-- 65 --> 00065  (表示5位数,不足补0)
    print(string.format("接受一个数字并将其转化为有符号的整数格式:%5d",65))		-- 65 -->    65  (表示5位数,不足补空格)
    print(string.format("%-5d接受一个数字并将其转化为有符号的整数格式",65))			-- 65 --> 65     (默认右对齐,加上-则左对齐)
    print(string.format("接受一个数字并将其转化为有符号的整数格式:%i",-65))		-- -65 --> -65
    print(string.format("接受一个数字并将其转化为八进制数格式:%o",65))				-- 65 --> 101
    print(string.format("接受一个数字并将其转化为无符号整数格式:%u",-65))			-- -65 -->4294967231  ??
    print(string.format("接受一个数字并将其转化为十六进制数格式(小写字母):%x",62))	-- 62 --> 3e
    print(string.format("接受一个数字并将其转化为十六进制数格式(小写字母):%X",62))	-- 62 --> 3E
    print(string.format("接受一个数字并将其转化为科学记数法格式(小写字母e:%e",65))	-- 65 --> 6.500000e+001
    print(string.format("接受一个数字并将其转化为科学记数法格式(大写字母E:%E",65))	-- 65 --> 6.500000E+001
    print(string.format("接受一个数字并将其转化为浮点数格式:%.1f",65))				-- 65 --> 65.0   (.1 表示保留一位小数)
    str1 = "abcde"
    print(str1)																				-- abcde
    print(string.format("接受一个字符串并将其转化为可安全被Lua编译器读入的格式:%q",str1))	-- "abcde"
    str2 = "hello"
    print(string.format("接受一个字符串并按照给定的参数格式化该字符串:%.3s",str2))	--  .3 表示截取str2前3位
    print(string.format("接受一个字符串并按照给定的参数格式化该字符串:%10s",str2))	-- 表示str2不足10位时,在左边补空格
    print(string.format("接受一个字符串并按照给定的参数格式化该字符串:%010s",str2))-- 表示str2不足10位时,在左边补0
    print(string.format("%-10s接受一个字符串并按照给定的参数格式化该字符串",str2))	-- 表示str2不足10位时,在右边补空格
  9. string.char(arg) 将整数转为字符并连接
    print(string.char(66,68,70,72))
  10. string.byte(arg,[int])  将指定下标位置的字符转成数字
    print(string.byte("BDF"))		--66:默认返回第一个字符对应的数字
    print(string.byte("BDF",2))		--68:转换下标为2所对应的字符B为数字
    print(string.byte("Lua",-1))	-- 转换末尾第一个字符
    print(string.byte("Lua",-2))	-- 转换末尾第二个字符
  11. string.len(arg)  计算指定字符串的长度
    print(string.len("hello"))
  12. string.rep(str,n)  返回字符串的n个复制
    print(string.rep("hello",3))	--hellohellohello
  13. string.gmatch(str,pattern)  返回str中匹配pattern的字符串列表
    for v in string.gmatch("hello lua world","%a+") do
    	print(v)
    end
  14. string.match(str,pattern,init)  只寻找源字符串中第一个配对,参数init可选,指定搜寻过程的起点,默认是1,没有匹配的返回nil
  15. 匹配模式:可以匹配字符串,也可以匹配字符类(string.find  ,  string.gmatch  ,  string.gsub  ,  string.match )
    1.  .(点):与任何字符配对
    2.  %a:与任何字母配对
    3.  %c:与任何控制符配对(例如\n)
    4.  %d:与任何数字配对
    5.  %l:与任何小写字母配对
    6.  %p:与任何标点配对
    7.  %s:与空白字符配对
    8.  %u:与任何大写字母配对
    9.  %w:与任何字母数字配对
    10.  %x:与任何十六进制数配对
    11.  %z:与任何代表0的字符配对
    12. []:与多个字符类配对,例如[%d%a_]:与任何数字、字母、下划线配对
    13. [^]:与多个字符类配对取反,例如[^%s]:与任何非空白字符配对
    14. 当上述的字符类用大写书写时,表示与非此类的任何字符配对,例如:%D:与任何非数字配对
    15. 特殊字符:( ) . % + - * ? [ ^ $ ]      若要配对特殊字符,则需要用%来转义,例如:%. 配对 .       %% 配对 %  (%还可以转义所有非字母的字符)
    16. 模式条目:指一个模式条目的序列。 在模式最前面加上符号 '^' 将锚定从字符串的开始处做匹配。 在模式最后面加上符号 '$' 将使匹配过程锚定到字符串的结尾。 如果 '^' 和 '$' 出现在其它位置,它们均没有特殊含义,只表示自身
      1. 单个字符类匹配该类别中的任意单个字符
      2. 单个字符类跟一个*,将匹配0或多个该类的字符
      3. 单个字符类跟一个+,将匹配1或多个该类的字符
      4. 单个字符类跟一个?,将匹配0或1个该类的字符
    17. 捕获:模式可以在内部用小括号括起一个子模式; 这些子模式被称为 捕获物。 当匹配成功时,由 捕获物 匹配到的字符串中的子串被保存起来用于未来的用途。 捕获物以它们左括号的次序来编号。 例如,对于模式 "(a*(.)%w(%s*))" , 字符串中匹配到 "a*(.)%w(%s*)" 的部分保存在第一个捕获物中 (因此是编号 1 ); 由 "." 匹配到的字符是 2 号捕获物, 匹配到 "%s*" 的那部分是 3 号。
  16. print(string.gsub("hello, www.xxx.com","%A","*"))	--将所有非字母的字符替换成*:hello**www*xxx*com	4
    print(string.gsub("hello, www.xxx.com","%.","*"))	--.是特殊字符,要用%来转义:hello, www*xxx*com	2
    print(string.gsub("I have %100 money","%%","$"))	--I have $100 money	1
    
    
    --string.match(str,pattern)  只寻找源字符串中第一个匹配字符串
    str = "abc123def45"
    patt1 = "[0-9]"
    patt2 = "[0-9]+"
    patt3 = "^[0-9]+"
    patt4 = "[0-9]+$"
    patt5 = "[2|3]+"
    print(string.match(str,patt1))		--1
    print(string.match(str,patt2))		--123
    print(string.match(str,patt3))		--nil :^放在起始位置表示必须以^后面的字符类开始(此例子表示要以数字开始)
    print(string.match(str,patt4))		--45 :$放在结束位置表示必须以$前面的字符类结束(此例子表示要以数字结束)
    print(string.match(str,patt5))		--23
    




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值