校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > Lua中的string庫(kù)和強(qiáng)大的模式匹配學(xué)習(xí)筆記

Lua中的string庫(kù)和強(qiáng)大的模式匹配學(xué)習(xí)筆記

熱門標(biāo)簽:漳州智云呼電話機(jī)器人 個(gè)人怎么在地圖標(biāo)注需要的店鋪 清朝地圖標(biāo)注哈爾濱 武漢外呼防封系統(tǒng)多少錢 新岸線智能電銷機(jī)器人 地圖標(biāo)注大廈 怎么去除地圖標(biāo)注 冀州市地圖標(biāo)注 百度地圖標(biāo)注早餐區(qū)域

lua原生解釋器對(duì)字符串的處理能力是十分有限的,強(qiáng)大的字符串操作能力來(lái)自于string庫(kù)。lua的string函數(shù)導(dǎo)出在string module中。在lua5.1,同時(shí)也作為string類型的成員方法,因此,我們既可以寫成string.upper(s), 也可以s:upper(),選擇你喜歡的寫法。

string.len(s)返回s的長(zhǎng)度。
string.rep(s, n)返回重復(fù)s字符串n次的字符串。
string.lower(s)返回一份已將大寫轉(zhuǎn)成小寫的字符串s的拷貝
lower,upper都是使用本地字符集的,另外,如果你想對(duì)一個(gè)string數(shù)組進(jìn)行排序,并不區(qū)分大小寫,你可能像這么寫:

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

table.sort(a, function(a, b)
     return string.lower(a) string.lower(b)
end)

string.sub(s, i, j)將從s提取一段字符串,從i到j(luò)(閉區(qū)間[i, j]),當(dāng)然你可以使用負(fù)索引值,將從字符串尾部算起,-1是最后一個(gè)字符,-2是倒數(shù)第二,等等,這么做的好處是當(dāng)我們要提取直到末尾幾個(gè)字符時(shí),從后面數(shù)起就很方便。例如:
復(fù)制代碼 代碼如下:

s = "[hello,world]"
print(string.sub(s, 2, -2)) --> hello,world

記住,lua中的字符串是不可變的。

string.char, string.byte用于轉(zhuǎn)換字符和對(duì)于的數(shù)字之間值。例如:

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

i = 97
print(string.char(i, i+1, i+2)) --> abc
print(string.byte("abc"))       --> 97
print(string.byte("abc"), -2)   --> 98

lua5.1 string.byte可以接受第三個(gè)參數(shù),返回i,j之間的多個(gè)值。例如,這么寫將字符串轉(zhuǎn)成字符值數(shù)組:

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

t = {s.byte(1, -1}

要想重新轉(zhuǎn)成字符串的話:
復(fù)制代碼 代碼如下:

string.char(unpack(t))

string.format是強(qiáng)大字符串格式化函數(shù),和c語(yǔ)言的printf類似,這里不累述。

lua string庫(kù)里最強(qiáng)大的函數(shù)是那些模式匹配函數(shù):find, match, gsub, gmatch。和其他腳本語(yǔ)言不同,lua既沒(méi)有用POSIX的正則表達(dá)式,也沒(méi)有用perl的正則表達(dá)式。原因是實(shí)現(xiàn)這些導(dǎo)致lua占用更多內(nèi)存,而lua的初衷是小巧的,嵌入應(yīng)用的語(yǔ)言。 lua用少于500行的代碼實(shí)現(xiàn)了自己的一套模式匹配,雖然不如標(biāo)準(zhǔn)的正則表達(dá)式強(qiáng)(一般需要4000以上代碼),但也足夠強(qiáng)大。

string.find將查找目標(biāo)模板在給定字符串中出現(xiàn)的位置,找到返回起始和結(jié)束位置,沒(méi)找到返回nil。例如:

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

s = "hello,world"
i, j = string.find(s, "hello")
print(string.sub(s, i, j))

當(dāng)然,string.find還可以給定起始搜索位置,當(dāng)你想找出所有出現(xiàn)的位置時(shí),這個(gè)參數(shù)就很有用,例如想知道換行符出現(xiàn)在那些地方:
復(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

string.match和string.find類似,都是在指定的string中查找相應(yīng)的模式。不同的是,他返回的是找到的那部分string:

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

print(string.match("hello,world","hello")) --> hello

對(duì)于像"hello"這樣的固定模式來(lái)說(shuō),這個(gè)函數(shù)就沒(méi)啥意義了。但是對(duì)于可變模式來(lái)說(shuō),就顯示出他的強(qiáng)大威力了:
復(fù)制代碼 代碼如下:

date = "now is 2014/10/6 17:58"
d = string.match(date, "%d+/%d+/%d+")
print(d)   --> 2014/10/6

string.gsub有三個(gè)參數(shù),給定字符串,匹配模式和替代字符串。作用就是將所有符合匹配模式的地方都替換成替代字符串。并返回替換后的字符串,以及替換次數(shù)。
復(fù)制代碼 代碼如下:

s = string.gsub("Lua is cute", "cute", "great")
print(s) --> Lua is great

string.gmatch函數(shù)將返回一個(gè)迭代器,用于迭代所有出現(xiàn)在給定字符串中的匹配字符串。

模式:

字符類:(character classes)

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

. all characters
%a letters
%c control characters
%d digits
%l lower -case letters
%p punctuation characters
%s space characters
%u upper-case letters
%w alphanumeric characters
%x hexadecimal digits
%z the character whose representation is 0

他們的大寫版本是他本身的互補(bǔ)。
魔法字符:
復(fù)制代碼 代碼如下:

( ) . % + - * ? [ ] ^ $

用%進(jìn)行轉(zhuǎn)義。'%%'代表'%'

字符集(char -set ):使用字符集可以自定義字符類。

1.不同的字符類,和單字符之間用[]
[%w_]匹配字母數(shù)字字符和下劃線。
[01]匹配二進(jìn)制數(shù)
2.要想字符集內(nèi)包含字符區(qū)間,起止之間加上-
[0-9] 相當(dāng)于 %d
[0-9a-fA-F]相當(dāng)于 %x
3.如果想得到該字符集的互補(bǔ),前面加上^
[^0-7] 任何非八進(jìn)制數(shù)字

重復(fù)或可選修飾符

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

+ 1 or more repetitions,匹配最長(zhǎng)的,
* 0 or more repetitions  最長(zhǎng)的
- also 0 or more repetitions 最短的
? optional (0 or 1 occurrence)

捕獲

捕獲機(jī)制允許一個(gè)模式串中的一部分來(lái)匹配目標(biāo)串種的一部分。寫法是模式串中你需要捕獲的那部分用()括起來(lái),例如:

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

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

我們也可以將捕獲用于模式串自身,"([\"'])(.-)%1",這里的%1表示匹配第一個(gè)捕獲的一份拷貝。

替換

前面已知道,string.gsub的參數(shù)可以是string,其實(shí),也可以是個(gè)函數(shù),或是table,如果是函數(shù),就會(huì)用捕獲的內(nèi)容作為參數(shù)調(diào)用該函數(shù),將返回的內(nèi)容作為替換字符串。如果是table,則用捕獲的內(nèi)容為key去取table的值來(lái)作為替換字符串,如果不存在,就不做替換。如:

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

function expand(s)
     return string.gsub(s, "$(%w+)", _G)
end
name = "Lua"; status = "great"
print(expand("$name is $status, isn't it?"))

(完)

您可能感興趣的文章:
  • Lua中string.len()使用指南
  • Lua loadstring函數(shù)用法實(shí)例
  • Lua中的loadfile、dofile、loadstring、require用法實(shí)例
  • Lua字符串庫(kù)(string庫(kù))學(xué)習(xí)筆記
  • LUA string庫(kù)使用小結(jié)
  • Lua中的string庫(kù)(字符串函數(shù)庫(kù))總結(jié)
  • Lua中實(shí)現(xiàn)StringBuffer功能
  • Lua中字符串(string)淺析
  • Lua中string.lower()使用指南

標(biāo)簽:儋州 宣城 德宏 天門 濰坊 金昌 天門 臺(tái)灣

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中的string庫(kù)和強(qiáng)大的模式匹配學(xué)習(xí)筆記》,本文關(guān)鍵詞  Lua,中的,string,庫(kù),和,強(qiáng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua中的string庫(kù)和強(qiáng)大的模式匹配學(xué)習(xí)筆記》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Lua中的string庫(kù)和強(qiáng)大的模式匹配學(xué)習(xí)筆記的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    宅男噜噜噜66一区二区66| 精品国产91乱码一区二区三区| 欧美一个色资源| 青青草国产成人av片免费| 日韩一级大片在线| 国产成人av福利| 亚洲视频 欧洲视频| 欧美剧情电影在线观看完整版免费励志电影| 亚洲一区二区三区免费视频| 日韩一区二区高清| 91色porny| 久久国产精品无码网站| 亚洲欧美日韩国产手机在线| 日韩丝袜美女视频| 91在线视频网址| 麻豆中文一区二区| 国产精品国产自产拍在线| 欧美二区乱c少妇| 91视频观看视频| 精品一区二区三区免费观看| 一级做a爱片久久| 国产日韩欧美一区二区三区乱码 | 成人高清免费观看| 青青青伊人色综合久久| 一区二区三区在线免费观看| 2017欧美狠狠色| 91精品国产综合久久精品图片| www.99精品| 国产精品18久久久久久久久久久久 | 国产精品久久久久久久久久免费看| 欧美日韩情趣电影| 91小视频在线| 国产v日产∨综合v精品视频| 狠狠色2019综合网| 免费成人av在线播放| 亚洲精品国产成人久久av盗摄| 国产日产欧美一区二区三区| 精品久久久网站| 日韩午夜精品视频| 欧美一卡在线观看| 91精品国产综合久久久久久久| 色综合久久久网| 99re66热这里只有精品3直播| 成人免费看黄yyy456| 国产成人免费视频精品含羞草妖精| 免费不卡在线观看| 日本在线播放一区二区三区| 亚洲在线观看免费视频| 亚洲一级不卡视频| 午夜精品久久久久久不卡8050| 偷窥少妇高潮呻吟av久久免费| 天天做天天摸天天爽国产一区| 亚洲一区二区三区中文字幕| 亚洲高清不卡在线观看| 亚洲大型综合色站| 日本不卡123| 九色porny丨国产精品| 看电影不卡的网站| 国产成人自拍高清视频在线免费播放| 国产精品白丝jk黑袜喷水| 成人午夜又粗又硬又大| 色婷婷av一区二区三区gif | 亚洲综合色噜噜狠狠| 亚洲一区二区三区不卡国产欧美| 亚洲一区在线视频| 一区二区欧美视频| 日本在线播放一区二区三区| 国产乱子伦视频一区二区三区| a级精品国产片在线观看| 91麻豆精品一区二区三区| 在线免费观看日本一区| 欧美日产在线观看| 久久久www成人免费无遮挡大片| 欧美韩国一区二区| 亚洲五月六月丁香激情| 蜜臀av性久久久久蜜臀aⅴ四虎 | 中文字幕中文字幕一区二区| 亚洲乱码一区二区三区在线观看| 午夜视频在线观看一区| 国产一区二区电影| 色综合久久久网| wwwwww.欧美系列| 亚洲乱码中文字幕综合| 精品一区二区三区视频| 在线观看亚洲精品视频| 欧美在线综合视频| 久久久亚洲综合| 日韩电影在线观看一区| 日韩成人免费在线| 国产婷婷色一区二区三区| 欧美tk—视频vk| 国产日韩av一区| 天堂一区二区在线| 国产99一区视频免费 | 国产日产欧美一区二区三区| 亚洲激情在线播放| 国产一区二区三区四| 在线看国产日韩| 中文字幕的久久| 裸体一区二区三区| 色美美综合视频| 欧美日韩一卡二卡三卡| 久久久久综合网| 久久久久久9999| 国产精品高潮久久久久无| 亚洲国产一区在线观看| 国产一区二区伦理片| 欧美久久久久久久久| 一区二区三区在线观看欧美| 国产精品一区二区在线观看网站 | 一区二区三区资源| 国产成人精品免费网站| 欧美一卡二卡三卡四卡| 亚洲国产视频一区二区| 成人国产在线观看| 欧美日本乱大交xxxxx| 国产欧美日韩视频在线观看| 青青草国产精品97视觉盛宴| 欧美色偷偷大香| 亚洲乱码中文字幕综合| 91在线视频在线| 亚洲三级在线免费观看| 成人av网站在线观看| 国产偷国产偷亚洲高清人白洁| 国产一区在线精品| 精品国产麻豆免费人成网站| 麻豆成人久久精品二区三区小说| 91精品国产综合久久久久久| 日本伊人色综合网| 日韩一区二区三区在线视频| 日本不卡一区二区三区| 777午夜精品免费视频| 日本欧美加勒比视频| 精品日韩一区二区| 国产福利一区二区三区在线视频| 国产精品免费久久| 91成人免费在线视频| 香港成人在线视频| 日韩一卡二卡三卡四卡| 国产一区二区不卡| 日韩一区欧美一区| 欧美人狂配大交3d怪物一区| 麻豆久久久久久久| 国产精品丝袜黑色高跟| 欧美无乱码久久久免费午夜一区| 午夜电影一区二区三区| 精品国产三级a在线观看| 成人午夜视频福利| 亚洲一区二区三区四区在线免费观看 | 色欧美片视频在线观看 | 久久伊人蜜桃av一区二区| 成人一级视频在线观看| 亚洲美女免费在线| 欧美一区二区三级| 国产成人午夜视频| 亚洲成a人v欧美综合天堂下载 | 亚洲乱码中文字幕| 久久久久国产成人精品亚洲午夜| 激情欧美一区二区| 国产精品久久久一本精品| 在线看不卡av| 国产精品一区二区视频| 亚洲美女在线一区| 欧美一区二区三区喷汁尤物| 成人手机在线视频| 亚洲成人在线观看视频| 日本一区二区成人在线| 欧美另类高清zo欧美| 成人va在线观看| 亚洲成a人片在线不卡一二三区| 久久精品一区二区三区四区 | 欧美日韩亚洲不卡| 国产传媒欧美日韩成人| 日韩电影在线免费观看| 亚洲欧美一区二区三区国产精品| 欧美日韩国产精品成人| 99视频热这里只有精品免费| 久久精品国产一区二区三区免费看| 国产欧美一区二区精品婷婷| 欧美精品自拍偷拍| 欧美亚洲国产bt| 99国产精品久| 福利电影一区二区| 国产综合色产在线精品| 午夜视频一区二区三区| 玉足女爽爽91| 椎名由奈av一区二区三区| 欧美激情在线免费观看| 精品免费日韩av| 精品国产一区二区三区不卡| 日韩欧美一区二区在线视频| 欧美精品久久久久久久多人混战 | 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 99久久精品免费精品国产| 国产自产v一区二区三区c| 亚洲不卡一区二区三区| 亚洲高清一区二区三区| 午夜电影一区二区三区| 亚洲成人午夜电影| 亚洲高清免费观看|