lua string庫

Lua 關於string庫的經常使用方法測試

1. string.len(str) 返回字符串長度lua

print(string.len("123"))     -- 3
print(string.len(" "))       -- 1

2. string.rep(str,n) 返回重複n次的str的字符串spa

-- 關於次數,針對於測試須要,咱們能夠設定很大的數值
print(string.rep("s",5))     -- sssss

3. string.lower(str) 將字符串str中的大寫字母轉換爲小寫字母code

local str = "Hello Lua"
print(string.lower(str))     -- hello lua

-- 咱們也能夠用於對字符串進行排序
local strTab  = {"Hello", "Abort", "Lua"} table.sort(strTab, function(a,b) return string.lower(a) < string.lower(b) end) local newStr = table.concat(strTab, ",") print(newStr)                 -- Abort,Hello,Lua

4. string.upper(str) 將字符串str中的小寫字母轉換爲大寫字母orm

print(string.upper("Hello Lua"))         -- HELLO LUA

5. string.reverse(str) 將字符串str反轉blog

print(string.reverse("EDCBA"))             -- ABCDE

示例代碼:排序

local _tab = {} local str = "hello world"; -- 倒序遍歷字符串
for i = #str, 1, -1 do 
    -- 截取字符,並存放到列表中
    local char = string.sub(str,i,i) table.insert(_tab, char) end 

-- 字符串鏈接列表
local newstr = table.concat(_tab) print(newstr)

6. string.sub(str, i, j) 將字符串str從第 i 位置截取到第 j 位置。若是第三個參數沒有,將默認爲-1索引

local str = "Hello Lua"
-- 從起始位置截取到末尾,結尾索引未添加,默認-1
print(string.sub(str,1))             -- Hello Lua
print(string.sub(str,1,-1))          -- Hello Lua
print(string.sub(str,1,#str))        -- Hello Lua

-- 從中間位置截取任意字符串,結尾索引可以使用負數,從後往前-1,-2, ...
print(string.sub(str, 2, 4))         -- ell
print(string.sub(str, 2,-6))         -- ell
print(string.sub(str, -8, -6))       -- ell

-- 注意:使用string.sub以及其餘操做方法,不會改變原有字符串的值,而是返回新的字符串
print(str)                           -- Hello Lua

7. string.char(num1,num2, ...) 用於將一個或多個數字轉換爲字符,並返回又這些字符鏈接起來的字符串字符串

print(string.char(101))                    -- e
print(string.char(108,111,118,101))        -- love

8. string.byte(str,index) 用於將字符串str的第 index 個字符轉換爲整數,其第二個參數未填寫會默認爲1string

print(string.byte("love", 4))             -- 101
print(string.byte("love", -1))            -- 101 --[[ -- 注意:因爲lua語言限制了棧大小,因此也限制了返回值的最大個數 默認最大爲100W個,所以不能用於大小超過1M的字符串 ]]

9. string.format()  用於格式化字符串,相似於C語言的printf

-- 十進制:%d 十六進制:%x 八進制:%o 浮點數:%f 字符串:%s
print(string.format("Number:%d",1))         -- Number:1
print(string.format("Number:%d",1.2))       -- Number:1
print(string.format("Float:%f",1))          -- Float:1.000000

-- 能夠對於數字進行補位,%2d表明表明不足位數以空格代替,%04d表明不足位數以0代替
print(string.format("數字:%d/%2d/%04d",1,2,3))     -- 數字: 數字:1/ 2/0003

-- 能夠使用小數對浮點數後面的位數進行限定
print(string.format("Float:%0.2f",1.2345))    -- Float:1.23
print(string.format("Float:%.2f",1.2345))     -- Float:1.23

 10. string.find(str,pattern) 根據目標字符串str搜索找到pattern字符或字符串的起始位置和結束位置,若是沒有返回nil

local str = "Hello, today is 2019/1/11 at 18:30 PM"
-- 查找正確,返回字符或字符串的起始位置,結束位置
local startPos, endPos = string.find(str,'H') print(startPos,endPos)                         -- 1 1
local startPos, endPos = string.find(str,"Hello") print(startPos,endPos)                          -- 1 5

-- 查找錯誤,返回nil
local startPos,endPos = string.find(str,"Wang") print(startPos,endPos)                         -- nil nil

-- 能夠根據string.find獲取的位置來獲取指定字符串
local newStr = string.sub(str,1,5) print(newStr)                                  -- Hello

11. string.gsub(str,modelstr,replacestr,pos) 在字符串str中查找modelstr,並將其替換爲replacestr,其pos用於限制替換範圍。

有兩個返回值,第一個是替換後的字符串,第二個是替換的次數

local str = "Hello, Python"
local newStr = string.gsub(str,"Python", "Lua") print("源字符串:" .. str)                     -- 源字符串:Hello, Python
print("新字符串:" .. newStr)                 -- 新字符串:Hello, Lua

-- 假若字符串沒找到替換的,不變
local newStr = string.gsub(str,"C++", "Lua") print("新字符串:" .. newStr)                 -- 新字符串:Hello, Python

-- 經過第四個參數來限定替換的次數
local newStr,count = string.gsub("all lii", "l","x") print(newStr,count)          -- axx xii 3
local newStr,count = string.gsub("all lii", "l","x",3) print(newStr,count)          -- axx xii 3
local newStr,count = string.gsub("all lii", "l","x",2) print(newStr,count)          -- axx lii 2
local newStr,count = string.gsub("all lii", "l","x",1) print(newStr,count)          -- axl lii 1
相關文章
相關標籤/搜索