亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > 綜合 > 正文

Lua教程(十四):字符串庫詳解

2024-07-21 23:04:45
字體:
供稿:網(wǎng)友

1. 基礎(chǔ)字符串函數(shù):

    字符串庫中有一些函數(shù)非常簡單,如:

    1). string.len(s) 返回字符串s的長度;
    2). string.rep(s,n) 返回字符串s重復(fù)n次的結(jié)果;
    3). string.lower(s) 返回s的副本,其中所有的大寫都被轉(zhuǎn)換為了小寫形式,其他字符不變;
    4). string.upper(s) 和lower相反,將小寫轉(zhuǎn)換為大寫;
    5). string.sub(s,i,j) 提取字符串s的第i個到第j個字符。Lua中,第一個字符的索引值為1,最后一個為-1,以此類推,如:
    print(string.sub("[hello world]",2,-2))      --輸出hello world
    6). string.format(s,...) 返回格式化后的字符串,其格式化規(guī)則等同于C語言中printf函數(shù),如:
    print(string.format("pi = %.4f",math.pi)) --輸出pi = 3.1416
    7). string.char(...) 參數(shù)為0到多個整數(shù),并將每個整數(shù)轉(zhuǎn)換為對應(yīng)的字符。然后返回一個由這些字符連接而成的字符串,如:
    print(string.char(97,98,99)) --輸出abc
    8). string.byte(s,i) 返回字符串s的第i個字符的Ascii值,如果沒有第二個參數(shù),缺省返回第一個字符的Ascii值。
 

復(fù)制代碼 代碼如下:

    print(string.byte("abc"))      --輸出97
    print(string.byte("abc",-1))  --輸出99
 

    由于字符串類型的變量都是不可變類型的變量,因此在所有和string相關(guān)的函數(shù)中,都無法改變參數(shù)中的字符串值,而是生成一個新值返回。

 

    2. 模式匹配函數(shù):

    Lua的字符串庫提供了一組強大的模式匹配函數(shù),如find、match、gsub和gmatch。

    1). string.find函數(shù):
    在目標字符串中搜索一個模式,如果找到,則返回匹配的起始索引和結(jié)束索引,否則返回nil。如:

復(fù)制代碼 代碼如下:

 s = "hello world"
 i, j = string.find(s,"hello") 
 print(i, j)        --輸出1  5
 i, j = string.find(s,"l")
 print(i, j)        --輸出3  3
 print(string.find(s,"lll"))  --輸出nil

 

    string.find函數(shù)還有一個可選參數(shù),它是一個索引,用于告訴函數(shù)從目標字符串的哪個位置開始搜索。主要用于搜索目標字符串中所有匹配的子字符串,且每次搜索都從上一次找到的位置開始。如:

 

復(fù)制代碼 代碼如下:

local t = {}
local i = 0
while true do
    i = string.find(s,"/n",i+1)
    if i == nil then
        break
    end
    t[#t + 1] = i
end

 

2). string.match函數(shù):

    該函數(shù)返回目標字符串中和模式字符串匹配的部分。如:

復(fù)制代碼 代碼如下:

 date = "Today is 2012-01-01"
 d = string.match(date,"%d+/-%d+/-%d+")
 print(d)  --輸出2012-01-01

    3). string.gsub函數(shù):

 

    該函數(shù)有3個參數(shù),目標字符串、模式和替換字符串?;居梅ㄊ菍⒛繕俗址兴谐霈F(xiàn)模式的地方替換為替換字符串。如:
 

復(fù)制代碼 代碼如下:

    print(string.gsub("Lua is cute","cute","great"))  --輸出Lua is great
 

    該函數(shù)還有可選的第4個參數(shù),即實際替換的次數(shù)。
 
復(fù)制代碼 代碼如下:

    print(string.gsub("all lii","l","x",1))  --輸出axl lii
    print(string.gsub("all lii","l","x",2))  --輸出axx lii
 

    函數(shù)string.gsub還有另一個結(jié)果,即實際替換的次數(shù)。
    count = select(2, string.gsub(str," "," "))  --輸出str中空格的數(shù)量

 

    4). string.gmatch函數(shù):

    返回一個函數(shù),通過這個返回的函數(shù)可以遍歷到一個字符串中所有出現(xiàn)指定模式的地方。如:
 

復(fù)制代碼 代碼如下:

 words = {}
s = "hello world"
for w in string.gmatch(s,"%a+") do
    print(w)
    words[#words + 1] = w
end
--輸出結(jié)果為:
--hello
--world
 

 

  3. 模式:

    下面的列表給出了Lua目前支持的模式元字符;

Lua,教程,字符串庫

  這些元字符的大寫形式表示它們的補集,如%A,表示所有非字母字符。
 

復(fù)制代碼 代碼如下:

    print(string.gsub("hello, up-down!","%S","."))   --輸出hello..up.down. 4
 

    上例中的4表示替換的次數(shù)。
    除了上述元字符之外,Lua還提供了另外幾個關(guān)鍵字符。如:( ) . % + - * ? [ ] ^ $
    其中%表示轉(zhuǎn)義字符,如%.表示點(.),%%表示百分號(%)。
    方括號[]表示將不同的字符分類,即可創(chuàng)建出屬于自己的字符分類,如[%w_]表示匹配字符、數(shù)字和下劃線。

 

    橫線(-)表示連接一個范圍,比如[0-9A-Z]

    如果^字符在方括號內(nèi),如[^/n],表示除/n之外的所有字符,即表示方括號中的分類的補集。如果^不在方括號內(nèi),則表示以后面的字符開頭,$和它正好相反,表示以前面的字符結(jié)束。如:^Hello%d$,匹配的字符串可能為Hello1、Hello2等。

    在Lua中還提供了4種用來修飾模式中的重復(fù)部分,如:+(重復(fù)1次或多次)、*(重復(fù)0次或多次)、-(重復(fù)0次或多次)和?(出現(xiàn)0或1次)。如:
 

復(fù)制代碼 代碼如下:

    print(string.gsub("one, and two; and three","%a+","word")) --輸出word, word word; word word
    print(string.match("the number 1298 is even","%d+")) --輸出1298
 

    星號(*)和橫線(-)的主要差別是,星號總是試圖匹配更多的字符,而橫線則總是試圖匹配最少的字符。

 

    4. 捕獲(capture):

    捕獲功能可根據(jù)一個模式從目標字符串中抽出匹配于該模式的內(nèi)容。在指定捕獲是,應(yīng)將模式中需要捕獲的部分寫到一對圓括號內(nèi)。對于具有捕獲的模式,函數(shù)string.match會將所有捕獲到的值作為單獨的結(jié)果返回。即它會將目標字符串切成多個捕獲到的部分。如:
 

復(fù)制代碼 代碼如下:

 pair = "name = Anna"
key,value = string.match(pair,"(%a+)%s*=%s*(%a+)")
print(key,value)  --輸出name anna

 

date = "Today is 2012-01-02"
y,m,d = string.match(date,"(%d+)/-(%d+)/-(%d+)")
print(y,m,d)      --輸出2012    01      02
 

 

還可以對模式本身使用捕獲。即%1表示第一個捕獲,以此類推,%0表示整個匹配,如:

復(fù)制代碼 代碼如下:

 print(string.gsub("hello Lua","(.)(.)","%2%1"))  --將相鄰的兩個字符對調(diào),輸出為ehll ouLa
 print(string.gsub("hello Lua!","%a","%0-%0"))    --輸出為h-he-el-ll-lo-o L-Lu-ua-a!

 

  5. 替換:

    string.gsub函數(shù)的第三個參數(shù)不僅可以是字符串,也可以是函數(shù)或table,如果是函數(shù),string.gsub會在每次找到匹配時調(diào)用該函數(shù),調(diào)用時的參數(shù)就是捕獲到的內(nèi)容,而該函數(shù)的返回值則作為要替換的字符串。當用一個table來調(diào)用時,string.gsub會用每次捕獲到的內(nèi)容作為key,在table中查找,并將對應(yīng)的value作為要替換的字符串。如果table中不包含這個key,那么string.gsub不改變這個匹配。如:

復(fù)制代碼 代碼如下:

function expand(s)
    return (string.gsub(s,"$(%w+)",_G))
end

 

name = "Lua"; status = "great"
print(expand("$name is $status, isn't it?"))  --輸出 Lua is great, isn't it?
print(expand("$othername is $status, isn't it?"))  --輸出 $othername is great, isn't it?

function expand2(s)
    return (string.gsub(s,"$(%w+)",function(n) return tostring(_G[n]) end))
end

print(expand2("print = $print; a = $a")) --輸出 print = function: 002B77C0; a = nil


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
8x8x最新地址| 欧美日韩高清一区二区| 自拍偷拍中文字幕| 欧美性极品xxxx做受| 国产精品劲爆视频| 欧美日韩xxx| 亚洲黄色免费av| 日本一二三区视频免费高清| 欧美做受777cos| 亚洲人123区| 婷婷久久一区| 亚洲最大中文字幕| 中文字幕久久精品| 久久综合欧美| 国产乱码精品一区二区三区日韩精品| 久久久久一本一区二区青青蜜月| 一区二区三区影视| 国产xxxx在线观看| 日韩视频永久免费观看| 精品国产av色一区二区深夜久久| 精品一区二区日韩| 欧美在线国产| 污污美女网站| 国产精品国产三级国产传播| 在线观看国产麻豆| 麻豆视频免费网站| 97国产成人高清在线观看| 久久久性生活视频| 国产一区自拍视频| 欧美俄罗斯乱妇| 在线资源av| 日本五十路在线| 午夜精品电影在线观看| 欧美日韩xx| 美女18一级毛片一品久道久久综合| 亚洲综合成人婷婷小说| 日韩黄色av网站| 日韩av一级大片| 91精品国产777在线观看| 亚洲欧美日本另类| 合欧美一区二区三区| 91论坛在线播放| 久久精品国产精品| 欧美视频第一区| 欧美性aaa| 欧美三区在线视频| 天天做综合网| 欧美69wwwcom| 99久久国产免费免费| 九色自拍麻豆| 亚洲综合男人的天堂| 97视频在线观看视频免费视频| 一区二区亚洲精品国产| 亚洲成人va| 真实国产乱子伦精品一区二区三区| 超碰在线观看91| 福利av在线| 天天射综合网视频| 欧美激情一区二区三区全黄| 激情欧美成人久久综合小说| 蜜桃视频在线观看一区二区| 精品99一区二区三区| 岛国成人av| 中文字幕制服丝袜在线| 国产视频911| 欧美激情日韩| 无码人妻一区二区三区在线| 美女亚洲一区| 亚洲成人久久久久| xxx欧美精品| 成人三级做爰av| 一区二区三区四区高清精品免费观看| 亚洲制服丝袜在线播放| 一区二区不卡久久精品| 国产精品久久久久久久久久| 午夜视频在线观看网站| 精品一卡二卡三卡四卡日本乱码| 中文字幕一区二区三区乱码在线| 午夜视频在线免费观看| 亚洲色图 在线视频| 欧美精品二区三区四区免费看视频| 久久精品国产69国产精品亚洲| 视频在线观看一区二区| seseavlu视频在线| 美女性感视频久久| 国产亚洲精aa在线看| 亚洲视频每日更新| 亚洲第一视频网站| 精品无码av一区二区三区| 国产精品xx| 黄色影院在线观看| 99自拍视频在线| 亚洲美女啪啪| 看片网站在线观看| 欧美激情国产在线| 神马伦理电影| 国产中文av在线| 无码av免费精品一区二区三区| 亚洲欧洲免费视频| 日韩网站在线免费观看| 成人av网站在线观看| 欧美另类视频| 天天干天天操天天爽| 国产精品夜夜夜爽阿娇| 欧美黑人xxxⅹ高潮交| 91免费看片在线观看| 日韩精品无码一区二区| 精品国产免费视频| 国产视频在线观看一区二区三区| 亚洲v日本v欧美v久久精品| 欧美激情在线免费观看| 欧美精品videossex88| 国产一区二区三区四区老人| 久草福利资源在线观看| 在线观看成人网| 色8久久人人97超碰香蕉987| 美女视频黄 久久| 青青草成人影院| 日韩影视一区二区三区| 蜜桃精品噜噜噜成人av| 成人白浆超碰人人人人| 久久久99精品免费观看不卡| 国产网友自拍视频导航网站在线观看| 黄色国产在线视频| 国产麻豆精品| 日韩在线免费电影| 毛片中文在线观看| 日本中文字幕在线视频| 无码人妻久久一区二区三区蜜桃| 亚洲欧美成人综合| 欧美xxxbbb| 秋霞影院午夜丰满少妇在线视频| av激情综合网| 热久久免费国产视频| 91精品日本| 欧美色另类天堂2015| 中文一区二区| 日韩一二三区不卡| 国产亚洲精品精品精品| 欧美人与禽猛交乱配视频| 黄色小视频免费网站| 日韩电影av| 99久精品国产| 国产91精品久久久久久久网曝门| 国产极品一区二区| 免费成人在线观看| 丁香另类激情小说| 视频一区视频二区视频三区视频四区国产| 激情综合网五月| 日本视频在线一区| 欧美日韩激情四射| 极品少妇一区二区三区精品视频| 亚洲综合婷婷久久| 性欧美视频videos6一9| 色偷偷男人天堂| 另类天堂视频在线观看| 亚洲男同1069视频| 亚洲三区欧美一区国产二区| 日韩欧美自拍| 国产激情久久久久久熟女老人av| 亚洲动漫第一页| 艳色歌舞团一区二区三区| 日韩 国产 欧美| 亚洲国产精品无码久久久| 午夜伦伦电影理论片费看| 日韩av中文字幕在线免费观看| 久久久精品美女| 天天操天天爽天天干| 综合天堂av久久久久久久| 国产欧美一区二区三区四区| 精品国产精品自拍| 亚洲国产一区二区三区a毛片| 日韩精品不卡一区二区| 国产成+人+综合+亚洲欧美丁香花| 国产又黄又大又粗视频| 九一精品在线观看| 亚洲欧美日韩国产中文专区| 天天搞夜夜操| 国产精品无码永久免费888| jizzjizzjizz中国| 91视频 - 88av| 国产小视频在线免费观看| 欧美xxxxxxxx| 国产三区二区一区久久| 国产一二三av| 免费在线观看日韩视频| 成人做爽爽免费视频| 久久久久久毛片| 日韩黄色免费观看| 青青草在线观看视频| 成人免费网站入口| av手机在线看| 精品国产乱码久久久久久影片| 黑人精品欧美一区二区蜜桃| 精品日韩av一区二区| 欧美精彩视频一区二区三区| 国产精品美女久久久免费| 精品国产av一区二区| 一级片免费网站| 亚洲综合自拍| 日韩三级精品电影久久久| 免费黄色在线看| 国产精品igao| 欧美性受xxxx免费视频| 欧美精品momsxxx| 欧美美女18p| 日韩欧美123区| 日韩精品一区二区三区不卡| 五月婷婷亚洲综合| a91a精品视频在线观看| 日韩欧美中文字幕在线观看| 91精品在线观| 无码人妻精品一区二区三区不卡| 免费亚洲电影在线| 免费观看黄一级视频| 亚洲三级在线看| 自拍偷拍第9页| 婷婷久久综合九色综合绿巨人| 国产精品欧美三级在线观看| 欧美国产亚洲精品久久久8v| 亚洲美女淫视频| 成人国产1314www色视频| 91麻豆精品国产91久久久久推荐资源| 国产一级大片免费看| 91国产丝袜在线播放| 精品人伦一区二区三电影| 欧美视频在线免费看| 最新av电影| 成人伦理视频网站| 亚洲人成网7777777国产| 久激情内射婷内射蜜桃| 久久久久国产免费| 2014国产精品| 日本久久亚洲电影| 亚洲国产123| 中国xxxx视频播放50| 色丁香久综合在线久综合在线观看| 国产午夜大地久久| aaawww| 蜜月aⅴ免费一区二区三区| 亚洲欧美日韩国产成人综合一二三区| 欧美成人精品不卡视频在线观看| 一区二区三区免费播放| 色欲综合视频天天天| 欧美电影免费观看| 在线观看一区二区三区四区| 国产成人精品免费看在线播放| 欧美三区美女| 最近中文在线观看| 人妻精品无码一区二区三区| 一区二区三区视频免费观看| 天堂网www在线观看| 天天草夜夜草| 午夜婷婷国产麻豆精品| canopen超线视频网线的应用| 日本天堂中文字幕| 国产成人综合精品三级| 国产专区第一页| 99国精产品一二二线| 亚洲欧美一区二区三区| 日本成址在线观看| 欧美激情视频网站| 欧美日韩亚洲一二三| 色网站在线视频| 国产乱码精品一区二区三区五月婷| 国产女同一区二区| 成人高潮视频| 中文字幕在线视频一区二区| missav|免费高清av在线看| 最近中文字幕在线免费观看| 榴莲视频成人app| 天天做天天爱夜夜爽| 国产导航在线| 成人在线免费网站| 亚洲人成网77777色在线播放| 美女裸体自慰在线观看| 久草资源在线视频| 91午夜视频| 狠狠色综合色综合网络| 日韩av色在线| 国产精品青青在线观看爽香蕉| 18被视频免费观看视频| 欧美一级淫片aaaaaaa视频| 蜜臀精品一区二区三区| 久久成人免费日本黄色| 午夜精品一区二区三区电影天堂| 好吊色免费视频| 国产情侣久久久久aⅴ免费| 有码一区二区三区| 精品3atv在线视频| 欧美一区午夜精品| 国产精品熟妇一区二区三区四区| 欧美激情 一区| freemovies性欧美| 男人通一通女人的下水道| 欧美最猛性xxxx高清| 久久久亚洲成人| 精品久久久久久久久久久| 亚洲精品v亚洲精品v日韩精品| 精品国产一区二区三区麻豆免费观看完整版| 麻豆蜜桃在线| 亚洲精品99999| 国产精品一区二区三区在线| 欧美日韩美女在线观看| 日韩精品久久久| 91麻豆产精品久久久久久| 日韩一区二区在线观看| 黄色片视频在线观看| 精品999日本久久久影院| 欧美激情精品久久| 全球av集中精品导航福利| 在线国产网址| 国产精品影院在线观看| 中国色在线观看另类| 日韩精品一区二区三区免费视频| 美女久久久精品| 亚洲日韩中文字幕一区| 久久精品国内一区二区三区水蜜桃| 国产欧美日韩综合精品一区二区| 国产精品人人| 欧美成人亚洲成人| 91探花福利精品国产自产在线| 熟女视频一区二区三区| 性鲍视频在线观看| 国产又大又粗又长| 特级毛片在线观看| 欧美美女一区二区| 俺去了亚洲欧美日韩|