婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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會返回一個迭代器函數,你可以使用這個迭代器函數去迭代匹配的所有內容??聪铝写a:

復制代碼 代碼如下:

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字符串庫中的幾個重點函數介紹的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产美女久久久久| 国产白丝精品91爽爽久久| 日本精品一区二区三区四区的功能| 中文av字幕一区| 欧美日韩中文字幕精品| 美女精品自拍一二三四| 亚洲精品在线一区二区| 97久久超碰国产精品| 亚洲福利视频一区| 亚洲精品中文在线影院| 欧美精品久久99| 成人黄色777网| 日韩精彩视频在线观看| 中文字幕中文字幕在线一区 | 91麻豆免费观看| 蜜臀久久99精品久久久画质超高清| 国产三级精品视频| 欧美精品一卡二卡| 91豆麻精品91久久久久久| 久草这里只有精品视频| 亚洲r级在线视频| 香蕉影视欧美成人| 亚洲电影一区二区| 亚洲自拍偷拍网站| 亚洲精品乱码久久久久久| 国产日产精品1区| 欧美国产日产图区| 国产精品国产三级国产普通话三级| 日韩免费在线观看| 欧美成人三级在线| 日韩精品一区二区三区老鸭窝| 日韩精品一区二区三区老鸭窝| 日韩西西人体444www| 日韩欧美亚洲国产另类| 欧美xingq一区二区| 国产农村妇女精品| 亚洲三级在线免费观看| 午夜精品福利一区二区蜜股av| 日韩 欧美一区二区三区| 麻豆精品在线看| 成人av电影观看| 欧美日韩一区二区三区免费看| 欧美成人一区二区三区| 亚洲欧美电影院| 蜜桃av一区二区三区电影| www.欧美色图| 欧美变态口味重另类| 悠悠色在线精品| 久久成人综合网| 欧美精品国产精品| 亚洲区小说区图片区qvod| 国产精品2024| 日韩免费高清视频| 天堂一区二区在线| 色综合天天综合网天天看片| 欧美精品一区二区三区高清aⅴ| 亚洲一区二区黄色| 91丨porny丨最新| 国产亚洲欧美中文| 九九九久久久精品| 欧美成人一级视频| 国产一区三区三区| 欧美精品免费视频| 青椒成人免费视频| 在线不卡a资源高清| 亚洲成人激情自拍| 欧美性欧美巨大黑白大战| 亚洲精品福利视频网站| 99热这里都是精品| 一二三区精品福利视频| 91丨porny丨最新| 一区二区三区加勒比av| 91成人免费电影| 亚洲成人你懂的| 91官网在线免费观看| 亚洲成人av中文| 欧美精品色一区二区三区| 久久国产福利国产秒拍| 国产日韩欧美麻豆| 色综合久久六月婷婷中文字幕| 国产精品女同一区二区三区| 亚洲永久精品大片| 欧美成人欧美edvon| 91福利资源站| 成人免费高清在线| 久久91精品久久久久久秒播| 一二三四社区欧美黄| 日韩毛片精品高清免费| 久久精品视频一区二区三区| 91精品国产一区二区三区| 色狠狠综合天天综合综合| 成人精品视频网站| 国产精品一级在线| 久久se这里有精品| 日韩黄色小视频| 亚洲大片一区二区三区| 一级女性全黄久久生活片免费| 国产丝袜欧美中文另类| 久久综合av免费| 久久影院视频免费| 亚洲精品一区二区三区四区高清 | 久久精品国产77777蜜臀| 亚洲高清视频中文字幕| 亚洲精品国产第一综合99久久| 国产精品视频一二| 国产精品视频yy9299一区| 国产日韩精品一区二区三区在线| 久久久亚洲欧洲日产国码αv| 久久中文字幕电影| 中文字幕的久久| 国产精品电影院| 亚洲乱码国产乱码精品精小说 | 欧洲一区在线电影| 91免费看片在线观看| 色综合色综合色综合| 色婷婷综合中文久久一本| 在线观看一区二区视频| 欧美精品日韩一区| 欧美xxxx在线观看| 国产日韩欧美精品一区| 国产精品久久久久久久久免费樱桃| 国产精品久久久久桃色tv| 亚洲精品美国一| 日本vs亚洲vs韩国一区三区| 麻豆成人综合网| 成人精品国产免费网站| 色先锋资源久久综合| 337p亚洲精品色噜噜| 精品久久久久久综合日本欧美| 久久九九久精品国产免费直播| 中文字幕日韩精品一区| 亚洲综合精品久久| 九九精品视频在线看| 成人高清免费在线播放| 欧美三级三级三级爽爽爽| 精品不卡在线视频| 亚洲精品视频在线| 免费xxxx性欧美18vr| 成人动漫精品一区二区| 欧美高清视频www夜色资源网| 精品久久久久久久久久久久久久久| 中文字幕一区二区三区乱码在线| 午夜亚洲福利老司机| 国产精品羞羞答答xxdd| 欧美午夜精品一区二区三区| 精品精品欲导航| 亚洲综合色噜噜狠狠| 国产剧情一区在线| 欧美熟乱第一页| 国产性天天综合网| 亚洲成av人片一区二区梦乃| 国产寡妇亲子伦一区二区| 欧美视频完全免费看| 中文字幕不卡的av| 男女男精品视频网| 欧美伊人精品成人久久综合97| 精品99999| 视频一区二区三区入口| 99久久精品一区| 国产日韩欧美在线一区| 午夜成人在线视频| 91亚洲精品久久久蜜桃网站| 久久综合成人精品亚洲另类欧美| 亚洲动漫第一页| 日本高清成人免费播放| 中文字幕精品一区二区精品绿巨人| 蜜桃视频在线一区| 欧美日韩一区二区在线视频| 亚洲三级免费电影| 粉嫩高潮美女一区二区三区| 日韩视频免费观看高清完整版在线观看 | 国产精品自拍网站| 欧美日韩高清在线| 亚洲激情图片qvod| 成人av集中营| 中文字幕精品—区二区四季| 国产乱码精品一区二区三区忘忧草| 91麻豆精品国产91久久久资源速度| 亚洲精品成人少妇| 成人app下载| 国产精品国产成人国产三级 | 欧美精品一区二区精品网| 日本不卡一二三区黄网| 欧美另类变人与禽xxxxx| 亚洲午夜免费视频| 欧美日韩久久久久久| 一区二区三区精品| 欧美亚洲动漫精品| 一区二区三区欧美在线观看| 色呦呦日韩精品| 亚洲精品中文字幕在线观看| 在线区一区二视频| 亚洲一区二区在线观看视频| 91久久奴性调教| 性欧美疯狂xxxxbbbb| 91麻豆精品国产91久久久 | 国产日产精品1区| 国产成人在线视频网站| 中文字幕在线不卡视频| 99re成人在线|