欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Lua字符串庫中的幾個重點函數介紹

Lua字符串庫中的幾個重點函數介紹

熱門標簽:如何利用高德地圖標注家 百度地圖標注位置網站 揚州電銷外呼系統軟件 武漢百應人工智能電銷機器人 開通400電話申請流程 智能語音電銷的機器人 電腦外呼系統輻射大嗎 400手機電話免費辦理 上海企業外呼系統排名

在《Lua中的一些庫》中也說到了,要對string庫的模式匹配進行單獨的講解。對于字符串的處理,對于任何語言的學習來說,都是一個難點,而且也是一個必會的知識點。給你一個字符串,讓你按照某種需求進行處理,你不會,那是多么尷尬的一件事情。所以,看完《Lua中的一些庫》和這篇文章之后,我爭取做到讓你在處理字符串時,不再感到捉襟見肘,不再尷尬。

說到Lua中的模式匹配,基本上就是圍繞著以下幾個函數展開的:

1.find;
2.match;
3.gsub;
4.gmatch。

我的總結也就是圍繞著上面的四個函數展開的。請容我慢慢道來。

簡單實用的find

string.find()函數用于在一個給定的目標字符串中搜索一個模式。最簡單的模式就是一個單詞,它只會匹配與自己完全相同的拷貝。當find找到一個模式后,它會返回兩個值:匹配到的起始索引和結尾索引;如果沒有找到任何匹配,它就返回nil。示例代碼:

復制代碼 代碼如下:

local str = "Hello World"
local i, j = string.find(str, "Hello") -- 返回Hello在str中的起始位置和終止位置
print(i, j)

string.find函數還具有一個可選的第三個參數,它是一個索引,告訴函數應該從目標字符串的哪個位置開始搜索。當我們處理一個字符串中與給定模式相匹配的所以內容時,這個設置是非常有用的。我們可以循環的進行查找操作。當然了,這里只是說了最普通,也是最簡單的一種方式,對于第二個參數,我們完全可以傳遞一個正則表達式,也就是一個pattern,進行正則匹配。示例代碼:

復制代碼 代碼如下:

local str = "Hello12345World"
local i, j = string.find(str, "%d+")
print(i, j) -- 6   10

find的兄弟match

函數string.match與string.find非常相似,它也是用于在一個字符串中搜索一種模式。區別在于,string.match返回的是目標字符串中與模式相匹配的那部分子串,并不是該模式所在的位置。示例代碼:

復制代碼 代碼如下:

local str = "Hello12345World"
local subStr = string.match(str, "%d+")
print(subStr)
 
local i, j =string.find(str, "%d+")
subStr =string.sub(str, i, j)
print(subStr)
 
-- 是不是可以認為match等于find + sub呢?

match和find是如此的相近,因此,在實際開發中,按照實際的需要,決定采用哪個。

替換利器gsub

string.gsub有3個參數:目標字符串、模式和替換字符串。它的基本用法是將目標字符串中所有出現模式的地方替換為目標字符串。來看一段簡短的代碼,就什么都明白了。

復制代碼 代碼如下:

local str = "Hello World"
local strResult = string.gsub(str, "Hello", "Jelly")
print(strResult) -- Jelly World

另外gsub還有可選的第四個參數,可以限制替換的次數。示例代碼如下:

復制代碼 代碼如下:

local str = "Hello World"
 
-- 這里不限制替換次數
local strResult, cnt = string.gsub(str, "l", "o")
print(strResult) -- Heooo Worod
print(cnt) -- 實際替換的次數
 
-- 開始限制替換次數
strResult, cnt = string.gsub(str, "l", "o", 1)
print(strResult) -- Heolo World
print(cnt) -- 就替換了一次

這里還有重點需要介紹,也就是gsub的強大之處。先看一段代碼,然后再做介紹。
復制代碼 代碼如下:

local replaceTb = {hello = "Jelly", world = "Think"}
 
local str = "hello world"
 
-- 注意,第3個參數是一個table
local strResult = string.gsub(str, "hello", replaceTb)
print(strResult) -- Jelly world
 
strResult = string.gsub(strResult, "world", replaceTb)
print(strResult) -- Jelly Think
 
strResult = string.gsub(strResult, "hello", replaceTb)
print(strResult) -- Jelly Think

可以看到,gsub的第三個參數是一個table,也就是說,當gsub的第三個參數是一個table時,如果在查找的字符串中有與第二個參數相匹配的內容,就會將該內容作為key,在table中查找該key對應的value;如果該table中沒有這個key,則不進行替換;上面的代碼就是表明這個意思。接下來再來看一段比較神奇的代碼:
復制代碼 代碼如下:

local replaceFunc = function (str)
    return str .. "JellyThink"
end
local str = "hello world"
-- 注意,第3個參數是一個table
local strResult = string.gsub(str, "hello", replaceFunc)
print(strResult) -- helloJellyThink world

沒有看錯,gsub的第三個參數還可以是一個函數,該函數的參數是被匹配的字符串,該函數的返回值將會作為目標字符串去進行替換匹配的內容。

沒法形容的gmatch

我也不知道要怎么形容gmatch,gmatch會返回一個迭代器函數,你可以使用這個迭代器函數去迭代匹配的所有內容。看下列代碼:

復制代碼 代碼如下:

local str = "Hello World"
local iteratorFunc = string.gmatch(str, "%a+") -- %a+表示匹配所有單詞
 
for i in iteratorFunc do
    print(i)
end

如果你對迭代器還不熟悉的話,可以看這里。我現在就使用find來實現一個我們自己的gmatch,功能和gmatch是差不多的。代碼如下:

復制代碼 代碼如下:

local str = "Hello World"
 
-- 使用find來實現一個自己的gmatch
local myGmatch = function (s, pattern)
  local resultTb = {} -- 相當于迭代器中的恒定狀態
  local index = 0 -- 相當于迭代器中的控制變量
 
  local i, j = string.find(s, pattern)
  while i do
    resultTb[#resultTb + 1] = string.sub(s, i, j)
    i, j = string.find(s, pattern, j + 1)
  end
 
  return function () -- 返回一個迭代器函數
    index = index + 1
    return resultTb[index]
  end
end
 
for i in myGmatch(str, "%a+") do
  print(i)
end

總結

這里就總結到這里了,這篇文章很詳細的幾個字符串庫中我認為比較重要的函數。我想我已經總結的很詳細了,寫了那么多的示例代碼,應該還好理解。就這樣了。希望對大家有用。最后,我希望大家也和我一起分享,分享你的學習心得,分享你的IT人生,期待。。。

您可能感興趣的文章:
  • Lua中的string庫(字符串函數庫)總結
  • Lua中的函數(function)、可變參數、局部函數、尾遞歸優化等實例講解
  • Lua中的一些常用函數庫實例講解
  • Lua中的模塊與module函數詳解
  • Lua中的函數知識總結
  • Lua的table庫函數insert、remove、concat、sort詳細介紹
  • Lua中的常用函數庫匯總
  • Lua中的面向對象編程詳解
  • Lua面向對象之類和繼承
  • Lua面向對象之多重繼承、私密性詳解
  • Lua面向對象編程學習筆記
  • Lua中函數與面向對象編程的基礎知識整理

標簽:江西 武漢 黑龍江 延邊 新余 張掖 嘉峪關 宜賓

巨人網絡通訊聲明:本文標題《Lua字符串庫中的幾個重點函數介紹》,本文關鍵詞  Lua,字符串,庫,中的,幾個,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua字符串庫中的幾個重點函數介紹》相關的同類信息!
  • 本頁收集關于Lua字符串庫中的幾個重點函數介紹的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    日本亚洲三级在线| 91网址在线看| 成人精品999| 欧美一区二区免费视频| 亚洲线精品一区二区三区| 91在线一区二区三区| 日本青青草视频| 国产精品视频一二三区| 国产激情一区二区三区| 999久久久国产| 日本一区二区三区免费乱视频| 国产一区二区在线观看视频| 日本高清黄色片| 国产日韩欧美一区二区三区乱码| 国产美女主播视频一区| 亚洲色图27p| 国产精品美女久久久久aⅴ国产馆| 国产成人亚洲综合a∨婷婷 | 国产一区二区不卡在线| 极品人妻videosss人妻| 久久精品欧美一区二区三区麻豆| 国产在线国偷精品产拍免费yy | 日韩精品一二三四| 三上悠亚ssⅰn939无码播放| 精品国产乱码久久久久久久久| 久久国产麻豆精品| 午夜国产福利视频| 国产精品人妖ts系列视频| fc2成人免费人成在线观看播放| 在线观看日韩国产| 亚洲五月六月丁香激情| 自拍视频一区二区| 久久五月婷婷丁香社区| 成人午夜短视频| 欧美亚洲日本一区| 日韩精彩视频在线观看| 国产一区二区三区四区在线| 国产精品成人免费精品自在线观看| 91免费观看视频| 欧美一级久久久久久久大片| 久久99久久99小草精品免视看| 日本少妇aaa| 亚洲欧美aⅴ...| 国产二级一片内射视频播放 | 亚洲天天做日日做天天谢日日欢| 韩国三级丰满少妇高潮| 日韩区在线观看| 国产传媒久久文化传媒| 欧美午夜精品一区二区三区| 男人的j进女人的j一区| 999精品在线视频| 亚洲最大成人综合| 88久久精品无码一区二区毛片| 国产精品毛片无遮挡高清| 三大队在线观看| 久久综合色播五月| 91小视频免费观看| 欧美电视剧在线看免费| 成人动漫一区二区三区| 91精品一区二区三区久久久久久 | 美女视频黄 久久| 国产在线免费看| 艳妇臀荡乳欲伦亚洲一区| 国产一区二区三区精品在线| 亚洲欧美日韩精品久久久久| 国产熟妇搡bbbb搡bbbb| 亚洲日本电影在线| 白白色免费视频| 亚洲欧美国产77777| 欧美做受高潮6| 亚洲自拍都市欧美小说| 欧洲性xxxx| 午夜久久久久久久久久一区二区| 中文字幕乱码av| 日韩成人一级片| 91高清视频免费看| 国产原创一区二区| 555www色欧美视频| 成人av网站在线| www国产亚洲精品久久麻豆| 亚洲911精品成人18网站| 亚洲国产经典视频| 野花社区视频在线观看| 一区二区三区四区蜜桃| 欧美h片在线观看| 蜜桃久久精品一区二区| 欧美三级蜜桃2在线观看| 成人永久看片免费视频天堂| 男男视频亚洲欧美| 国产真实乱在线更新| 男女视频一区二区| 欧美日韩成人综合在线一区二区| 国产91露脸合集magnet| 精品动漫一区二区三区在线观看| 一区二区三区人妻| 国产精品久久久久7777按摩| 中文字幕在线看高清电影| 一区二区三区精品在线| 亚洲欧美精品aaaaaa片| 激情偷乱视频一区二区三区| 91精品国产综合久久久蜜臀粉嫩| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 成人精品在线观看视频| 亚洲自拍欧美精品| 色狠狠一区二区| 粉嫩绯色av一区二区在线观看| 亚洲精品一区二区精华| 亚洲综合自拍网| 亚洲国产精品久久一线不卡| 一本色道久久综合亚洲91| 国产福利91精品| 久久精品免费在线观看| av网站免费在线看| 美国欧美日韩国产在线播放| 欧美一区二区三区性视频| 性高潮免费视频| 五月天激情小说| 夜夜嗨av一区二区三区| 欧美系列日韩一区| 91小宝寻花一区二区三区| 亚洲免费资源在线播放| 色呦呦网站一区| 91一区二区在线观看| 亚洲人成网站色在线观看 | 久久99精品久久久久久动态图| 91精品国产麻豆国产自产在线| 最新中文字幕日本| 亚洲午夜在线视频| 在线不卡欧美精品一区二区三区| 在线中文字日产幕| 亚洲成人av免费| 欧美电影影音先锋| 国产精品第七页| 免费在线观看成人| 欧美精品一区二区三区在线播放| 精品人妻无码一区二区三区换脸| 久久精品国产久精国产| 久久人人爽爽爽人久久久| 亚洲一级片在线播放| 国产一区二区91| 国产精品麻豆久久久| 色综合婷婷久久| 欧美色图校园春色| 亚洲va欧美va人人爽| 欧美一级黄色片| 中文字幕免费高清| 国产电影精品久久禁18| 亚洲欧洲99久久| 欧美图区在线视频| 国产真实乱人偷精品| 蜜桃视频在线观看一区| 久久精品一区二区三区不卡牛牛 | 波多野结衣中文字幕一区| 亚洲免费伊人电影| 欧美精品自拍偷拍动漫精品| aa片在线观看视频在线播放| 久久精品国产一区二区三区免费看| 久久精品视频在线免费观看| h色网站在线观看| 深夜视频在线观看| 免费在线成人网| 国产欧美一区二区三区鸳鸯浴| 好吊色视频在线观看| 中文字幕av一区二区三区人妻少妇 | 亚洲人与黑人屁股眼交| 97精品视频在线观看自产线路二| 亚洲国产日韩a在线播放| 欧美成人乱码一区二区三区| 中文字幕美女视频| 午夜视频在线免费看| 蜜桃视频在线一区| 中文字幕亚洲一区二区va在线| 欧美日本免费一区二区三区| 中文字幕免费视频| 99久久精品费精品国产一区二区| 日韩av在线发布| 中文字幕欧美日本乱码一线二线 | 亚洲宅男天堂在线观看无病毒| 日韩精品一区二区三区四区 | 日韩福利在线视频| 97久久超碰精品国产| 欧美96一区二区免费视频| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 狠狠色2019综合网| 依依成人综合视频| 26uuu精品一区二区| 欧美在线视频日韩| 亚洲AV无码成人精品区明星换面| 99精品视频一区二区三区| 青青草国产精品97视觉盛宴| 国产精品国产自产拍高清av| 日韩欧美国产午夜精品| 色偷偷久久人人79超碰人人澡| 欧美亚一区二区三区| 99久久久久久99| 国内成+人亚洲+欧美+综合在线| 亚洲综合一区二区精品导航| 国产午夜精品一区二区| 91麻豆精品国产自产在线| 亚洲av无码一区二区三区在线|