字符串

作者: 爱折腾的傻小子 | 来源:发表于2021-01-06 17:34 被阅读0次

    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 结束位置
    
    • string.reverse(arg)
      • 字符串反转
    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
    
    • string.char(arg)
      • char 将整型数字转成字符并连接
    print(string.char(97,98,99,100))    -- abcd
    
    • string.byte(arg[,int])
      • byte 转换字符为整数值(可以指定某个字符,默认第一个字符)
    print(string.byte("ABCD",4))    -- 68
    print(string.byte("ABCD"))          -- 65
    
    • string.len(arg)
      • 计算字符串长度
    print(string.len("abc"))        -- 3
    
    • string.rep(string, n))
      • 返回字符串string的n个拷贝
    print(string.rep("abcd",2))     -- abcdabcd
    
    • ..
      • 链接两个字符串
    print("w"..".c")  -- wc
    

    相关文章

      网友评论

          本文标题:字符串

          本文链接:https://www.haomeiwen.com/subject/umghoktx.html