Lua学习笔记-day4: 字符串

一、字符串

  1. 字符串的表示形式: 单引号"'",双引号""",两对中括号"[[]]"。

  2. 转义字符:

    1. \ddd: 1到3位八进制数所代表的的任意字符。

    2. \xhh: 1到2位十六进制数所代表的的任意字符。

  3. 字符串操作:

    1. string.upper('Hello')

      1. 功能:字符串全部转换为大写字母。

      2. 结果:'HELLO'

    2. string.lower('Hello')

      1. 功能:字符串全部转换为小写字母。

      2. 结果:'hello'

    3. string.gsub(mainString, findString, replaceString, num)

      1. 功能:在mainString中,将findString替换为replaceString,num为替换的次数。

      2. 示例:string.gsub('abababab', 'ab', 'cd', 3)

      3. 结果:'cdcdcdab'

    4. string.find(str, substr, [init, [end]])

      1. 功能:在str中查找substr,返回substr在str中的起始索引;如果没有找到,则返回nil;init, end为可选参数,表示在str的指定索引区间查找substr。

      2. 示例:a, b = string.find('abcd', 'bc')

      3. 结果:a = 2, b = 3

    5. string.reverse('hello')

      1. 功能:字符串反转。

      2. 结果:"olleh"。

    6. string.format("value is %d", 4)

      1. 功能:返回类似于c语言中printf格式化后的字符串。关于格式字符,在后文中说明。

      2. 结果:'value is 4'

    7. string.char(97, 98, 99, 100)

      1. 功能:将整形数字转换为字符,并连接为字符串。

      2. 结果:"abcd"。

    8. string.byte('abcd', [3])

      1. 功能:将字符串指定索引的字符,转换为整数值。索引参数可选,默认为1.

      2. 结果:99.

    9. string.len('abcd')

      1. 功能:返回字符串的长度。

      2. 结果:4.

    10. string.rep('hello', 3)

      1. 功能:返回指定字符串的n次拷贝

      2. 结果:hellohellohello

    11. string.gmatch(str, pattern)

      1. 功能:返回一个迭代器函数,每次调用这个迭代器函数,返回一个在str中找到的下一个符合pattern描述的子串。如果没有找到返回nil。关于匹配模式在下文中说明。

      2. 示例:for word in string.gmatch('hello lua and python', '%a+') do print(word) end

      3. 结果:依次输出hello, lua, and, python

    12. string.match(str, pattern, [init])

      1. 功能:在str中搜索并返回第一个符合pattern的子串。init表示str的起始位置,可选。

      2. 示例:string.match('hello 33 lua', '%d+ %a+')

      3. 输出:33 lua

  4. 字符串格式化:

    1. string.format()用来生成具有特定格式的字符串。类似c语言中的printf()函数。

    2. 格式化字符:

      1. %c: 

        1. 作用:接收一个数字,将其转换为字符。

        2. 示例:string.format("%c", 97)

        3. 结果:a

      2. %d、%i:

        1. 作用:接收一个数字,将其转换为有符号整数。

        2. 示例:string.format("%d", -1)

        3. 结果:-1

      3. %u: 将数字转换为无符号整数。

      4. %o: 将数字转换为八进制数格式。

      5. %x、%X: 将数字转换为十六进制数格式。

      6. %e、%E:将数字转换为科学计数法格式。

      7. %f:将数字转换为浮点数。

      8. %g:将数字转换为%e和%f中较短的一种格式。

      9. %q:

        1. 作用:接收一个字符串,并将其转化为可安全被lua编译器读入的格式。

        2. 示例:string.format('%q', 'one\ntwo')

        3. 结果:

          • one

          • two

      10. %s:接收一个字符串,并按照给定的格式,转换该字符串。

    3. 格式化字符中%后的修饰参数,读入顺序如下:

      1. + : 

        1. 作用:正数时显示+号;负数时显示-号。

        2. 示例:string.format("%+d", 4)

        3. 结果:+4

      2. 0(数字0):

        1. 作用:占位符,配合宽度数值使用。默认占位符是空格。

        2. 示例:string.format("%+03d", 4)

        3. 结果:+04。注意:+也占了一位。

      3. 宽度数值:

        1. 作用:最少占用的位数。不足指定宽度数值时,用占位符补充。

        2. 示例1:string.format("%03d", 4)

        3. 结果1:004

        4. 示例2:string.format("%03d", 12345678)

        5. 结果2:12345678

      4. 小数位数或字串裁切:

        1. 作用:显示指定个数的小数或显示指定位数的字符串。

        2. 示例1:string.format("%.3f", 6.1)

        3. 结果1:6.100

        4. 示例2:string.format('%.3s', 'abcd')

        5. 结果2:abc

  5. 匹配模式:

    1. 匹配模式用字符串来描述。

    2. 匹配模式可以用于模式匹配函数:string.find、string.match、string.gmatch、string.gsub

    3. 字符类(也称元字符),表示匹配某一类字符:

      1. .(点):匹配任何字符。

      2. %a: 匹配任何字母。

      3. %w: 匹配任何字母或数字。

      4. %l: 匹配任何小写字母。

      5. %u: 匹配任何大写字母。

      6. %d: 匹配任何数字。

      7. %x: 匹配任何十六进制数。

      8. %z: 匹配任何代表0的字符。

      9. %p: 匹配任何标点。

      10. %s: 匹配任何空白符。

      11. %c: 匹配任何控制字符。

      12. [字符类的集合]:

        1. 示例:[%l%u%d]

        2. 作用:匹配小写字母、大写字母或数字。

      13. [^字符类的集合]:

        1. 示例:[^%l%u%d]

        2. 作用:匹配非小写字母、非大写字母和非数字。

      14. 以上字符类大写时,表示不匹配该类字符。

        1. 示例:%A

        2. 作用:匹配任何非字母的字符。

    4. 模式条目:

      1. 单个字符类只能匹配该类中的一个字符。

        1. 示例:%a。匹配一个字母。

      2. * : 匹配0个或多个,匹配尽可能长的串。

      3. + : 匹配1个或多个,匹配尽可能长的串。

      4. - : 匹配0个或多个,匹配尽可能短的串。

      5. ? : 匹配0个或1个。

      6. %n:

        1. n的取值:1至9.

        2. 作用:匹配等于n号捕获物的子串。

        3. 示例:见下文。

      7. %bxy:

        1. x、y为明确的字符。

        2. 作用:匹配x和y平衡的子串

        3. 示例:string.match(',,,(123)abc', "%b()")。

        4. 结果:(123)

      8. %f[set]

        1. 作用:

          1. set可以是字符类中的任何组合。

          2. 匹配set指定子串前面的子串。

        2. 示例:???

    5. 模式:

      1. ^ : 匹配字符串的开头。

      2. $ : 匹配字符串的结尾。

    6. 捕获:

      1. 作用:

        1. 匹配模式字符串中用小括号括起来的子模式,称为捕获。

        2. 与子模式相匹配的字符串会被保存在捕获物中。

      2. 示例:string.gsub("   abc   ", "^%s*(.-)%s*$", "%1")

      3. 结果:abc

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值