c++string替换指定位置字符_Lua 字符串
生活随笔
收集整理的這篇文章主要介紹了
c++string替换指定位置字符_Lua 字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--[[ Lua 字符串 字符串或串(String)是由數字、字母、下劃線組成的一串字符 Lua語言中字符串可以使用以下三種方式來表示 ]] -- 單引號的一串字符 -- 雙引號的一串字符 -- [[ 與 ]] 之間的一串字符string1 = "Lua"print("string1=",string1)string2 = 'hello'print("string2=",string2)string3 = [["Hello World"]]print("string3=",string3)-- string1= Lua-- string2= hello-- string3= "Hello World"--[[ 轉義字符用于表示不能直接顯示的字符,比如后退鍵,回車鍵,等。 在字符串轉換雙引號可以使用 \" 下面是所有轉義字符和所對應的意義 轉義字符 意義 ASCII碼值(十進制) \a 響鈴(BEL) 007 \b 退格(BS),將當前位置移到前一列 008 \f 換頁(FF),將當前位置移到下一頁開頭 012 \n 換行(LF),將當前位置移到下一行開頭 010 \r 回車(CR),將當前位置移到本行開頭 013 \t 水平制表(HT),(跳到下一個TAB位置) 009 \v 垂直制表(VT) 011 \\ 代表一個反斜杠字符 \ 092 \' 代表一個單引號(撇號)字符 039 \" 代表一個雙引號字符 034 \0 空字符(NULL) 000 \ddd 1到3位八進制數所代表的任意字符 三位八進制 \xhh 1到2位十六進制所代表的任意字符 二位十六進制]]print("\n\n")-- ***************************************************************************--[[ 字符串操作 Lua提供了很多的方法來支持字符串的操作]]-- string.upper(argument)-- 字符串全部轉換為大寫字母print(string.upper("hello")) -- HELLO-- string.lower(argument)-- 字符串全都轉換為小寫字母print(string.lower("HellO")) -- hello-- string.gsub(mainString,findString,replaceString,num)-- 在字符串中替換-- mainString為要操作的字符串,findString為被替換的字符串-- replaceString要替換的字符,num替換次數(可以忽略,則全部替換)print(string.gsub("HelloWorld","l","#",2)) -- He##oWorld 2-- string.find(str,substr,[init, [end]])-- 在一個指定的目標字符串中搜索指定的內容(第三個參數為索引),返回其具體的位置,不存在則返回nilprint(string.find("Hello Lua, Hello World Lua","Lua",2)) -- 7 9print(string.find("Hello Lua, Hello World Lua","Lua",10)) -- 24 26-- string.reverse(arg)-- 字符串反轉print(string.reverse("HelloWorld")) -- dlroWolleH-- ***************************************************************************-- string.format(...)-- 返回一個類似printf的格式化字符串local st = string.format("the value is:%d",520)print(st) -- the value is:520-- 字符串格式化 詳細介紹--[[ Lua提供了string.format()函數來生成具有特定格式的字符串,函數的第一個參數時格式, 之后是對應格式中每個代號的各種數據。由于格式字符串的存在,使得產生的長字符串可讀性大大提高了。 格式字符串 轉義碼 %c 接受一個數字,并將其轉換為ASCII碼表中對應的字符 %d 接受一個數字并將其轉化為有符號的整數格式 %o 接受一個數字并將其轉化為八進制數格式 %u 接受一個數字并將其轉化為無符號整數格式 %x 接受一個數字并將其轉化為十六進制數格式,使用小寫字母 %X 接受一個數字并將其轉化為十六進制數格式,使用大寫字母 %e 接受一個數字并將其轉化為科學計數法格式,使用小寫字母e %E 接受一個數字并將其轉化為科學計數法格式,使用大寫字母E %f 接受一個數字并將其轉化為浮點數格式 %g(%G) 接受一個數字并將其轉化為%e(%E,對應%G)及%f中較短的一種格式 %q 接受一個字符串并將其轉化為可安全被Lua編譯器讀入的格式 %s 接受一個字符串并按照給定的參數格式化該字符串 為進一步細化格式,可以在%后添加參數,參數將以如下順序讀入: (1)符號:一個+符號表示其后的數字轉義符將讓正數顯示正好,默認情況下只有負數顯示符號 (2)占位符:一個0,在后面制定了字符串寬度時占位用,不填時默認占位符是空格 (3)對齊標識:在指定了字符串寬度時,默認為右對齊,增加-好可以改變為左對齊 (4)寬度數值 (5)小數位數/字符串裁切:在寬度數值后增加的小數部分n,若后接f(浮點數轉義符,如%6.3f)則 設定該浮點數的小數只保留n位,若后接s(字符串轉義符,如%5.3s)則設定該字符串值顯示前n位]]do local string1 = "Lua" local string2 = "HelloWorld" local number1 =10 local number2 = 20 print(string.format("%s %s",string1,string2)) -- Lua HelloWorld local day = 1 local month =1 local year = 2020 print(string.format("%03d/%02d/%02d",year,month,day)) -- 2020/01/01 print(string.format("%.4f",1/3)) -- 0.3333 print(string.format("%5.3s",string2)) -- Hel 注意,這前面有兩個空格 print(string.format("%1.3s",string2)) --Helendprint("\n")doprint(string.format("%c", 83)) -- Sprint(string.format("%+d", 17.0)) -- +17print(string.format("%05d", 17)) -- 00017print(string.format("%o", 17)) -- 21print(string.format("%u", 3)) -- 3print(string.format("%x", 13)) -- dprint(string.format("%X", 13)) -- Dprint(string.format("%e", 1000)) -- 1.000000e+03print(string.format("%E", 1000)) -- 1.000000E+03print(string.format("%6.3f", 13)) -- 13.000print(string.format("%q", "One\nTwo") ) -- "One\ -- Two"print(string.format("%s", "monkey")) -- monkeyprint(string.format("%10s", "monkey")) -- monkeyprint(string.format("%5.3s", "monkey")) -- monendprint("\n\n")-- ***************************************************************************-- string.char(arg) 和 string.byte(arg[, int])-- char將整型數字轉成字符并連接,byte轉換字符為整數值(可以指定某個字符,默認第一個字符)-- 字符與整數相互轉換local ss = string.char(65,66,67,68)print(ss) -- ABCDlocal num = string.byte("ABCD",2)local num2 = string.byte("ABCD")local num3 = string.byte("ABCD",4)print("num=",num,"num2=",num2,"num3=",num3) -- num= 66 num2= 65 num3= 68-- 轉換第一個字符print(string.byte("HelloLua")) -- 72-- 轉換第三個字符print(string.byte("HelloLua",3)) -- 108-- 轉換末尾第一個字符 print(string.byte("HelloLua",-1)) -- 97-- 轉換第二個字符 print(string.byte("HelloLua",2)) -- 101-- 轉換末尾第二個字符print(string.byte("HelloLua",-2)) -- 117-- 整數ASCII碼轉換為字符print(string.char(97)) -- a-- ***************************************************************************-- string.len(arg)-- 計算字符串的長度local str = "Hello"local strlen = string.len(str)print("str=",str,"len=",strlen) -- str= Hello len= 5-- string.rep(string,n)-- 返回字符串string的n個拷貝local tmpstr = string.rep("abcd",2)print(tmpstr) -- abcdabcdtmpstr = string.rep("HelloWorld ",10)print(tmpstr)-- HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld -- ***************************************************************************-- .. -- 連接兩個字符串local he = "hello "local wo = "world"local hewo = he .. woprint(string.format("he=%s wo=%s hewo=%s",he,wo,hewo))-- he=hello wo=world hewo=hello worldprint("\n")-- ***************************************************************************-- string.gmatch(str,pattern)-- 返回一個迭代器函數,每一次調用這個函數,返回一個在字符串str找到的下一個符合pattern描述的字串。-- 如果參數pattern描述的字符串沒有找到,迭代器函數返回nilfor world in string.gmatch("Hello Lua Hello World","%a+") do print(world)-- Hello-- Lua-- Hello-- Worldendprint("\n\n")-- ***************************************************************************-- string.match(str,pattern,init)-- string.match()只尋找源字符串str中的第一個配對,參數init可選,指定搜尋過程的起點,默認為1-- 在成功配對時,函數將返回配對表達式中的所有捕獲結果,如果沒有設置捕獲標記,則返回整個配對字符串,當沒有成功配對時,返回nillocal match_string = string.match("Sorry! I have 2 questions for you.","%d+ %a+")print(match_string) -- 2 questionsprint("\n")print(string.format("%d %q", string.match("I have 2 questions for you.", "(%d+) (%a+)")))-- 2 "questions"print("\n\n")-- ***************************************************************************--[[ 字符串截取 字符串截取使用sub()方法 string.sub()用于截取字符串 string.sub(s, i [, j]) 參數說明: s:要截取的字符串 i:截取開始位置 j:截取結束位置,默認為-1,最后一個字符 來,看看實例]]do local sourcestr = "prefix--brookzhyy--suffix" print("原始字符串:",string.format("%q",sourcestr)) -- 原始字符串: "prefix--brookzhyy--suffix" -- 截取部分,從第4個到第10個 local f_sub = string.sub(sourcestr,4,10) print("截取4-10個字符:",string.format("%q",f_sub)) -- 截取1-10個字符: "fix--br" -- 截取部分,從第1個到第8個 local s_sub = string.sub(sourcestr,1,8) print("截取第1-8個字符:",string.format("%q",s_sub)) -- 截取第1-8個字符: "prefix--" -- 記得取最后10個 local t_sub = string.sub(sourcestr,-10) print("截取最后10個字符:",string.format("%q",t_sub)) -- 截取最后10個字符: "yy--suffix" -- 索引越界,輸出原始字符串 local f_sub = string.sub(sourcestr,-100) print("截取 索引越界,返回原是字符:",string.format("%q",f_sub)) -- 截取 索引越界,返回原是字符: "prefix--brookzhyy--suffix"endprint("\n\n")-- ***************************************************************************-- ***************************************************************************-- 匹配模式--[[ 匹配模式直接用常規的字符串來描述。用于模式匹配的函數: string.find string.gmatch string.gsub string.match 在模式串中使用字符類 字符類指可以匹配一個特定字符集合內任何字符的模式項。比如:字符類 %d 匹配任何數字, 所以可以使用模式串 %d%d%d%d/%d%d/%d%d 搜索 yyyy/mm/dd格式的日期 不多說,直接上例子]]do local str = "Deadline is 2020/08/25. And that day is Chinese Valentine's Day." local date = "%d%d%d%d/%d%d/%d%d" print(string.sub(str,string.find(str,date))) -- 2020/08/25end--[[ Lua支持的所有字符類 單個字符(除了 ^$()%.[]*+-?外):與該字符自身配對 .(點) 與任何字符配對 %a 與任意字母配對 %c 與任何控制符配對(\n等) %d 與任意數字配對 %l 與任意小謝字母配對 %p 與任意標點(punctuation)配對 %s 與空白字符配對 %u 與任意大寫字母配對 %w 與任意字母/數字配對 %x 與任意十六進制數配對 %z 與任意代表0的字符配對 %x(此處x是非字母非數字字符):與字符x配對,主要用來處理表達式中有功能多字符(^$()%.[]*+-?)的配對問題 例如:%% 與 % 配對 [數個字符類]:與任何[]中包含的字符類配對,例如:[%w_]與任何字母/數字,或下劃線符號_配對 [^數個字符類]:與任何不包含在[]中的字符類配對,例如:[^%s]與任何非空白字符配對 當上述的字符類用大些書寫時,表示與非此字符的任何字符配對,如,%S表示與任何非空白字符配對,例如 %A 與非字母的字符配對]]print(string.gsub("hello, up-down!", "%A","."))-- hello..up.down. 4-- 解釋下: %A 配對任何非字母字符,因此,配對到了 , -! 四個,然后把它們替換為.-- 數字4不是字符串的一部分,它是gsub返回的第二個結果,代表發生替換的次數-- 在模式匹配中有一些特殊字符,它們有特殊的意義,Lua中的特殊字符如下-- ( ) . % + - * ? [ ^ $-- % 用作特舒符號的轉義字符,因此 %. 匹配點. %% 匹配字符百分號% -- 轉義字符%不僅可以用來轉義特殊字符,還可以用于所有的非字母的字符--[[ 模式條目可以是 單個字符類匹配該類別中的任意單個字符 單個字符類跟一個*,將匹配零個或多個該類的字符,這個條目總是匹配盡可能長的串 單個字符類跟一個+,將匹配一個或多個該類的字符,這個條目總是匹配盡可能長的串 單個字符類跟一個-,將匹配零個或多個該類的字符,和*不同,這個條目總是匹配盡可能短的串 單個字符類跟一個?,將匹配零個或一個該類的字符,只要有可能,他會匹配一個 %n,這里的n可以從1到9,這個條目匹配一個等于n號捕獲物(后面有描述)的字串 %bxy,這里的x和y是兩個明確的字符:這個條目匹配以x開始y結束,且其中x和y保持平衡的字符串, 意思是,如果從左到右讀這個字符串,對每次讀到一個x就+1,讀到一個y就-1,最終結束處的那個y是第一個讀到0的y。 舉個例子:條目%b()可以匹配到括號品哼到表達式 %f[set],指邊境模式,這個條目會匹配到一個位于set內某個字符之前到一個空串,且這個位置和前一個字符不屬于set。 集合set到含義如前面所描述,匹配出的那個空串之開始和結束點點計算就看成該處有個字符\0一樣。 模式: 模式,指一個模式條目序列。在模式最前面加上符號^將錨定從字符串的開始處做匹配。 在模式最后面加上符號$將使匹配過程錨定到字符串的結尾。如果^和$同時出現在其他位置,它們均沒有特殊含義,只表示自身。 捕獲: 模式可以在內部用小括號括起一個子模式:這些子模式被稱為 捕獲物。當匹配成功時,由 捕獲物匹配到的字符串的字串被保存起來用于未來的用途, 捕獲物以它們左括號的次序來編號。例如,對于模式 (a*(.)%w(%s*)) 字符串中匹配到 a*(.)%w(%s) 的部分保存在第一個捕獲物中(因此編號是1) 由 . 匹配到的字符是2好捕獲物,匹配到 %s* 的那部分是3號 作為一個特例,空的捕獲()將捕獲到當前字符串的位置(它是一個數字)。 例如:如果將模式 ()aa() 作用到字符串 flaaap上,將產生兩個捕獲物:3和5]]
掃碼關注一下唄~
總結
以上是生活随笔為你收集整理的c++string替换指定位置字符_Lua 字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 社保统筹总额和个人总额是什么意思 社保卡
- 下一篇: menu什么意思中文意思_英文alone