一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Lua - Lua字符串庫(string庫)學(xué)習(xí)筆記

Lua字符串庫(string庫)學(xué)習(xí)筆記

2020-04-17 10:56腳本之家 Lua

這篇文章主要介紹了Lua字符串庫(string庫)學(xué)習(xí)筆記,本文列舉了一些常用的Lua字符串庫函數(shù),如byte、char、dump、find等,需要的朋友可以參考下

Lua 最強(qiáng)大的特性之一就是它的字符串處理能力,它支持字符格式化輸出,具有可擴(kuò)展的模式匹配查找功能,以及一些實(shí)用的字符操作,例如查詢、截取、替換和刪除等字符串操作,這些字符串操作函數(shù)都封裝在一個(gè)名為 string 的模塊里。

Lua 里的字符索引是從 1 開始,索引值也可以是負(fù)數(shù),這種情況將被解釋成向后索引,從字符串末尾開始算起。

下面是 Lua 5.2 提供的字符串操作函數(shù):

byte

函數(shù) string.byte 把字符串里的第 i 個(gè)字符轉(zhuǎn)為 ASCII 編碼,默認(rèn)是輸出第一個(gè)字符的編碼(只有一個(gè)參數(shù)的話),用法:

 

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

string.byte (s [, i [, j]])

 

例子:

 

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


print(string.byte("abc")) //echo:97

 

print(string.byte("abc", 2))//echo:98

 

char

函數(shù) string.char 是把一個(gè) ASCII 編碼轉(zhuǎn)換為對(duì)應(yīng)的字符,用法:

 

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

string.char (asc1, ...)

 

例子:

 

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


print(string.char(97)) //echo a

 

print(string.char(99, 100, 101)) //echo cde

 

dump

函數(shù) string.dump 返回一個(gè)函數(shù)二進(jìn)制形式的字符串,用法:

 

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

string.dump (function)

 

參數(shù) function 是一個(gè) Lua 函數(shù):

 

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

function test()
    print("just a test")
end
print(string.dump(test))

 

函數(shù) string.dump 實(shí)現(xiàn)了函數(shù)的序列化,函數(shù)可以很輕松的傳遞,并在其他作用域調(diào)用。函數(shù) string.dump 出來的二進(jìn)制字符串,可以用 load 函數(shù)反序列回來直接調(diào)用。

 

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

function test()
    print("just a test")
end
local sd = string.dump(test)
print(sd)
local ls = load(sd)
print(ls)
ls()

 

find

函數(shù) string.find 查找字符串 s 里第一個(gè)符合查找字符 pattern 的位置,用法:

 

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

string.find (s, pattern [, init [, plain]])

 

如果找到了目標(biāo)字符 pattern,則返回它的開始和結(jié)束位置:

 

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

start, end = string.find("just a test", "st")
print(start, end)

 

如果沒有找到,則返回 nil:

 

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

print(string.find("just a test", "dhq.me"))

 

format

函數(shù) string.format 用于把字符串格式化輸出,用法:

 

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

string.format (formatstring, ···)


string.format 函數(shù)的第一個(gè)參數(shù)是用來指定字符串的格式,例如:

 

 

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

print(string.format("%s is %d", "ten", 10))

 

上面例子里的 %s 表示字符串,%d 表示數(shù)字,它們是 Lua 的格式化輸出符號(hào)。

string.format 函數(shù)的用法跟 C 語言里的 printf 函數(shù)類似,例如它可以像 printf 那樣輸出指定位數(shù)的數(shù)字:

 

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

Pi = 3.1415926
print(string.format("Pi is %.2f", Pi))

 

Lua 的字符格式化輸出符號(hào)列表:

 

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

.           所有字符
%a          字母
%c          控制符
%d          數(shù)字
%D          非數(shù)字
%l          小寫字母
%p          標(biāo)點(diǎn)符號(hào)
%s          字符串
%u          大寫字母
%w          字母數(shù)字
%x          十六進(jìn)制數(shù)
%z          用 0 表示的字符

 

gmatch

函數(shù) string.gmatch 會(huì)返回一個(gè)迭代函數(shù),尅通過該函數(shù)遍歷到一個(gè)字符串 s 中所有出現(xiàn)指定匹配模式 pattern 的地方,用法:

 

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

string.gmatch (s, pattern)

 

例如下面是找出字符串 s 里的所有單詞:

 

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

s = "just a test"
for w in string.gmatch(s, "%a+") do
    print(w)
end

 

gsub

函數(shù) string.gsub 用于全局字符串替換,字符串 s 里滿足匹配模式 pattern 格式的字符都會(huì)被替換成 repl 參數(shù)的值,用法:

 

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

string.gsub (s, pattern, repl [, n])

 

例如:

 

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

print(string.gsub("just a test", "st", "*"))

 

匹配模式 pattern 可以是一個(gè)正則:

 

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

s = "num is 1234567890"
print(string.gsub(s, "%d", "*"))

 

可在函數(shù)的最后加上一個(gè)可選參數(shù) n,表示指定要替換的次數(shù):

 

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

s = "sethook, setlocal, setmetatable, setupvalue, setuservalue"
print(string.gsub(s, "s%a+", "S", 2))

 

len

函數(shù) string.len 用于返回字符串 s 的長度,用法:

 

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

string.len (s)

 

例子:

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

print(string.len("abcdefg"))

 

lower

函數(shù) string.lower 用于把字符串 s 里的字母轉(zhuǎn)為小寫,用法:

 

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

string.lower (s)

 

例如:

 

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

print(string.lower("AbCdEfG"))

 

match

函數(shù) string.match 用于查找字符串 s 里第一個(gè)匹配對(duì)模式 pattern 的值,并返回匹配值,用法:

 

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

string.match (s, pattern [, init])

 

上面參數(shù) init 是可選, 表示查找過程的起點(diǎn), 默認(rèn)從 1 開始:

 

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

print(string.match("just a test", "test"))

 

參數(shù) patter 可以是一個(gè)正則模式:

 

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

t = "today is 2003-5-31"
print(string.match(t, "%d+-%d+-%d+"))

 

如果 pattern 為空,則返回整個(gè)字符串;如果沒匹配成功,則返回 nil。

 

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

print(string.match("abcdabcd", "a"))

 

rep

函數(shù) string.rep 返回一個(gè)由分隔符 sep 隔開的重復(fù)(repeat)n 次字符 s 的字符串,用法:

 

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

string.rep (s, n [, sep])


默認(rèn)的分隔符 sep 是空字符。

 

 

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

print(string.rep("repeat", 3))

 

reverse

函數(shù) string.reverse 用于倒轉(zhuǎn)一個(gè)字符串 s 的排序,用法:

 

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

string.reverse (s)

 

例如:

 

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

print(string.reverse("reverse"))

 

sub

函數(shù) string.sub 用于從字符串 s 里截取一個(gè)從第 i 個(gè)字符到第 j 個(gè)字符間的子字符串,用法:

 

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

string.sub (s, i [, j])


例如:

 

 

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

print(string.sub("abcdefg", 2, 5))


參數(shù) i 可以是負(fù)數(shù),這種情況下,子串的位置從字符串 s 的最后開始算起:

 

 

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

print(string.sub("abcdefg", -4, -2))


參數(shù) end 省略的話,則會(huì)返回從 i 到字符串末尾的子字符串:

 

 

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

print(string.sub("abcdefg", 3))

 

upper

函數(shù) string.upper 用于把字符串 s 里的字母轉(zhuǎn)為大寫,用法:

 

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

string.upper (s)

 

例如:

 

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

print(string.upper("AbCdEfG"))

 

延伸 · 閱讀

精彩推薦
  • LuaLua實(shí)現(xiàn)__add方法重載示例

    Lua實(shí)現(xiàn)__add方法重載示例

    這篇文章主要介紹了Lua實(shí)現(xiàn)__add方法重載示例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時(shí)講解了lua注釋語法、Lua命令行方式等內(nèi)容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • LuaLua中計(jì)算、執(zhí)行字符串中Lua代碼的方法

    Lua中計(jì)算、執(zhí)行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計(jì)算、執(zhí)行字符串中Lua代碼的方法,類似JavaScript中eval函數(shù)的功能,在Lua中也可以實(shí)現(xiàn),需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個(gè)table賦值等內(nèi)容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結(jié)合代碼實(shí)例詳細(xì)講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • Lua深入探究Lua中的解析表達(dá)式

    深入探究Lua中的解析表達(dá)式

    這篇文章主要介紹了深入探究Lua中的解析表達(dá)式,對(duì)于其語法部分的說明和示例都超詳細(xì),極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua教程(二):基礎(chǔ)知識(shí)、類型與值介紹

    Lua教程(二):基礎(chǔ)知識(shí)、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎(chǔ)知識(shí)、類型與值介紹,本文講解了Hello World程序、代碼規(guī)范、全局變量、類型與值等內(nèi)容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • LuaLua中table庫函數(shù)方法介紹

    Lua中table庫函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
主站蜘蛛池模板: 精品福利视频一区二区三区 | 色哟哟精品 | 亚洲swag精品自拍一区 | 国产精品区牛牛影院 | 欧美最猛性xxxxx男男 | 性妲己| 水多多www视频在线观看高清 | 臀精插宫NP文| 九九热这里只有精品视频免费 | 亚洲福利在线观看 | 国产国拍亚洲精品av | a男人的天堂久久a毛片 | 99ri国产在线观看 | 国产精品欧美亚洲韩国日本 | 人体做爰aaaa免费 | 91精品国产99久久 | 深夜在线影院 | 好大好猛好深好爽视频 | 亚洲咪咪 | 肉文高h文 | 欧美调教打屁股spank视频 | 四虎精品永久在线网址 | 2020精品极品国产色在线观看 | 极限淫生小说 | 91极品女神久色在线播放 | 色婷婷天天综合在线 | 紧致肉肉高h | 日本护士撒尿 | 香蕉成人国产精品免费看网站 | 四虎com| 王晶三级作品 | 国产激情视频网站 | 水多多www视频在线观看高清 | 黄+色+性+人免费 | 男同桌扒开女同桌胸罩喝奶 | 咪咪爱991 | 久久精品国产色蜜蜜麻豆国语版 | 暖暖在线日本 | 久久九九有精品国产23百花影院 | 能免费观看的韩剧 | 98色花堂永久地址国产精品 |