LUA string的状态
生活随笔
收集整理的這篇文章主要介紹了
LUA string的状态
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
字符串庫在表string內提供所有函數。它也給字符串設置元表,其中的__index字段指向string表。因此,你可以使用面向對象風格的字符串函數。例如,string.byte(s, i)可寫為s:byte(i)。
string.byte (s [, i [, j]])
返回字符s, s[i+1], ···, s[j]的內部數字代碼。i缺省為1;j缺省為i。
注意數字代碼不一定是跨平臺可移植的。
string.char (···)
接受0獲多個整數。返回一個字符串,其長度等于參數個數,其中的每個字符的內部數字代碼等于相應的參數。
注意數字代碼不一定是跨平臺可移植的。
string.dump (function)
返回給定函數的二進制表示的字符串,之后在其上應用loadstring返回函數的拷貝。function必須是不帶upvalueLua函數。
string.find (s, pattern [, init [, plain]])
在字符串s中查找pattern的第一個匹配。如果找到則返回它開始和結束處在s中的索引;否則,返回nil。可選的第三參數init是數字,指定從哪兒開始搜索;其缺省值是1并且可為負數。如果真值作為可選的第四參數plain,則關閉模式匹配設備,所以函數執行無格式的“查找子串”操作,pattern中的字符并不被認為是“魔術的(magic)”。注意,如果給出了plain,則init也必須給出。
如果模式具有捕獲(capture),則在成功的匹配中被捕獲的值也在兩個索引后面返回。
string.format (formatstring, ···)
Returns a formatted version of its variable number of arguments following the description given in its first argument (which must be a string). 格式字符串遵循同printf族標準C函數同樣的規則。僅有的區別是不支持*、l、L、n、p和h等選項/修飾符,而且有個額外選項q。q選項以可安全地為Lua解釋器讀取的適當形式格式化字符串:字符串被寫在雙引號之間,而且字符串中的所有雙引號、換行、內嵌的0和反斜杠被恰當地轉義。例如,調用
string.format('%q', 'a string with "quotes" and \n new line')
產生字符串:
"a string with \"quotes\" and \
new line"
選項c、d、E、e、f, g、G、i、o、u、X和x都預期得到數字作為參數,然而q和s期望得到字符串。
該函數不接受含有內嵌的0的字符串值,除了作為q選項的參數。
string.gmatch (s, pattern)
返回一個迭代器函數,每次調用返回來自pattern的下一個捕獲,從字符串s開頭直到結尾。如果pattern沒指定捕獲則每次調用產生整個匹配。
作為例子,下面的循環
s = "hello world from Lua"
for w in string.gmatch(s, "%a+") do
print(w)
end
將迭代來自字符串s的所有單詞,每行打印一個。下一個例子從給定的字符串收集所有的鍵=值對放在表中:
t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "^(%w+)=(%w+)") do
t[k] = v
end
對于該函數,模式起始處的‘^’不能作為錨點,因為這會阻止迭代。
string.gsub (s, pattern, repl [, n])
返回s的拷貝,其中出現的所有(或前n個,如果指定)pattern被替換為repl——可以是字符串、表或函數,指定的替換串。gsub也返回出現的匹配的總數作為第二個值。
如果repl是字符串,它的值被用作替換式。字符%用作轉義字符:repl中的任何形如%n的序列代表第n個捕獲的子串(見下面),其中n在1和9之間。序列%0代表整個匹配。序列%%代表單個%。
如果repl是表,則對于每個匹配,用第一個捕獲作為鍵查詢表;如果模式未指定捕獲,則整個匹配被用作鍵。
如果repl是函數,則每次匹配發生時都按順序傳入所有捕獲的子串作為參數調用該函數;如果模式沒指定捕獲,則整個匹配作為單個參數傳入。
如果表查詢或函數調用返回的結果是個字符串或數字,則被用作替換串;否則,如果是false或nil,則不發生替換(即原始匹配被保持在字符串中)。
這里有一些例子:
x = string.gsub("hello world", "(%w+)", "%1 %1")
--> x="hello hello world world"
x = string.gsub("hello world", "%w+", "%0 %0", 1)
--> x="hello hello world"
x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
--> x="world hello Lua from"
x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)
--> x="home = /home/roberto, user = roberto"
x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)
return loadstring(s)()
end)
--> x="4+5 = 9"
local t = {name="lua", version="5.1"}
x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
--> x="lua-5.1.tar.gz"
string.len (s)
接受字符串并返回其長度。空串""長度為0。內嵌的0被計算在內,所以"a\000bc\000"長度為5。
string.lower (s)
接受字符串并返回其所有大寫字母變為小寫的拷貝。所有其他字符不變。大寫字母的定義依賴于但前locale。
string.match (s, pattern [, init])
在字符串s中查找pattern的首次匹配。如果找到一個,則返回來自模式的捕獲;否則返回nil。如果pattern未指定捕獲則返回整個匹配。可選的第三個參數init是數字,指定從哪兒開始搜索;其缺省值是1并且可為負。
string.rep (s, n)
返回字符串s的n個拷貝拼接字符串。
string.reverse (s)
返回字符串s的顛倒的字符串。
string.sub (s, i [, j])
返回s的子串,它起始于i并延續到j;i和j可為負數。如果省略j,則它被假定為-1(同字符串長度一樣)。特別地,調用string.sub(s,1,j)返回s長為j的前綴,而且string.sub(s, -i)返回s長為i的后綴。
string.upper (s)
接受字符串并返回其所有小寫字母變為大寫的拷貝。所有其他字符不變。小寫字母的定義依賴于但前locale
string.byte (s [, i [, j]])
返回字符s, s[i+1], ···, s[j]的內部數字代碼。i缺省為1;j缺省為i。
注意數字代碼不一定是跨平臺可移植的。
string.char (···)
接受0獲多個整數。返回一個字符串,其長度等于參數個數,其中的每個字符的內部數字代碼等于相應的參數。
注意數字代碼不一定是跨平臺可移植的。
string.dump (function)
返回給定函數的二進制表示的字符串,之后在其上應用loadstring返回函數的拷貝。function必須是不帶upvalueLua函數。
string.find (s, pattern [, init [, plain]])
在字符串s中查找pattern的第一個匹配。如果找到則返回它開始和結束處在s中的索引;否則,返回nil。可選的第三參數init是數字,指定從哪兒開始搜索;其缺省值是1并且可為負數。如果真值作為可選的第四參數plain,則關閉模式匹配設備,所以函數執行無格式的“查找子串”操作,pattern中的字符并不被認為是“魔術的(magic)”。注意,如果給出了plain,則init也必須給出。
如果模式具有捕獲(capture),則在成功的匹配中被捕獲的值也在兩個索引后面返回。
string.format (formatstring, ···)
Returns a formatted version of its variable number of arguments following the description given in its first argument (which must be a string). 格式字符串遵循同printf族標準C函數同樣的規則。僅有的區別是不支持*、l、L、n、p和h等選項/修飾符,而且有個額外選項q。q選項以可安全地為Lua解釋器讀取的適當形式格式化字符串:字符串被寫在雙引號之間,而且字符串中的所有雙引號、換行、內嵌的0和反斜杠被恰當地轉義。例如,調用
string.format('%q', 'a string with "quotes" and \n new line')
產生字符串:
"a string with \"quotes\" and \
new line"
選項c、d、E、e、f, g、G、i、o、u、X和x都預期得到數字作為參數,然而q和s期望得到字符串。
該函數不接受含有內嵌的0的字符串值,除了作為q選項的參數。
string.gmatch (s, pattern)
返回一個迭代器函數,每次調用返回來自pattern的下一個捕獲,從字符串s開頭直到結尾。如果pattern沒指定捕獲則每次調用產生整個匹配。
作為例子,下面的循環
s = "hello world from Lua"
for w in string.gmatch(s, "%a+") do
print(w)
end
將迭代來自字符串s的所有單詞,每行打印一個。下一個例子從給定的字符串收集所有的鍵=值對放在表中:
t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "^(%w+)=(%w+)") do
t[k] = v
end
對于該函數,模式起始處的‘^’不能作為錨點,因為這會阻止迭代。
string.gsub (s, pattern, repl [, n])
返回s的拷貝,其中出現的所有(或前n個,如果指定)pattern被替換為repl——可以是字符串、表或函數,指定的替換串。gsub也返回出現的匹配的總數作為第二個值。
如果repl是字符串,它的值被用作替換式。字符%用作轉義字符:repl中的任何形如%n的序列代表第n個捕獲的子串(見下面),其中n在1和9之間。序列%0代表整個匹配。序列%%代表單個%。
如果repl是表,則對于每個匹配,用第一個捕獲作為鍵查詢表;如果模式未指定捕獲,則整個匹配被用作鍵。
如果repl是函數,則每次匹配發生時都按順序傳入所有捕獲的子串作為參數調用該函數;如果模式沒指定捕獲,則整個匹配作為單個參數傳入。
如果表查詢或函數調用返回的結果是個字符串或數字,則被用作替換串;否則,如果是false或nil,則不發生替換(即原始匹配被保持在字符串中)。
這里有一些例子:
x = string.gsub("hello world", "(%w+)", "%1 %1")
--> x="hello hello world world"
x = string.gsub("hello world", "%w+", "%0 %0", 1)
--> x="hello hello world"
x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
--> x="world hello Lua from"
x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)
--> x="home = /home/roberto, user = roberto"
x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)
return loadstring(s)()
end)
--> x="4+5 = 9"
local t = {name="lua", version="5.1"}
x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
--> x="lua-5.1.tar.gz"
string.len (s)
接受字符串并返回其長度。空串""長度為0。內嵌的0被計算在內,所以"a\000bc\000"長度為5。
string.lower (s)
接受字符串并返回其所有大寫字母變為小寫的拷貝。所有其他字符不變。大寫字母的定義依賴于但前locale。
string.match (s, pattern [, init])
在字符串s中查找pattern的首次匹配。如果找到一個,則返回來自模式的捕獲;否則返回nil。如果pattern未指定捕獲則返回整個匹配。可選的第三個參數init是數字,指定從哪兒開始搜索;其缺省值是1并且可為負。
string.rep (s, n)
返回字符串s的n個拷貝拼接字符串。
string.reverse (s)
返回字符串s的顛倒的字符串。
string.sub (s, i [, j])
返回s的子串,它起始于i并延續到j;i和j可為負數。如果省略j,則它被假定為-1(同字符串長度一樣)。特別地,調用string.sub(s,1,j)返回s長為j的前綴,而且string.sub(s, -i)返回s長為i的后綴。
string.upper (s)
接受字符串并返回其所有小寫字母變為大寫的拷貝。所有其他字符不變。小寫字母的定義依賴于但前locale
轉載于:https://www.cnblogs.com/lizs/p/3727731.html
總結
以上是生活随笔為你收集整理的LUA string的状态的全部內容,希望文章能夠幫你解決所遇到的問題。