string.gsub ja string.gmatch
Korvatkaa merkkijonoissa olevia hahmomätsäyksiä ja käykää ne läpi.
string.gsub ja string.gmatch on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.
string.gsub-funktion perusteet
string.gsub(s, pattern, repl, n) korvaa kuvion pattern osumat merkkijonossa s arvolla repl enintään n kertaa (oletuksena kaikki). Se palauttaa tuloksena olevan merkkijonon ja tehtyjen korvausten määrän. Korvaava arvo voi olla merkkijono, taulukko tai funktio.
local s = "hello world hello"
local result, count = string.gsub(s, "hello", "hi")
print(result) -- hi world hi
print(count) -- 2
-- Limit replacements
local r2 = string.gsub(s, "hello", "hi", 1)
print(r2) -- hi world helloPoimintaviittaukset korvauksessa
Korvaavassa merkkijonossa %1, %2 ja niin edelleen viittaavat kuvion poimintoihin. %0 viittaa koko osumaan. Näin voitte järjestää tai ympäröidä osuneen tekstin uudelleen.
-- Swap first and last name
local name = "Smith, John"
local swapped = string.gsub(name, "(%a+), (%a+)", "%2 %1")
print(swapped) -- John Smith
-- Wrap numbers in brackets
local text = "items: 3 and 7 total 10"
local tagged = string.gsub(text, "%d+", "[%0]")
print(tagged) -- items: [3] and [7] total [10]Funktio korvauksena
Kun korvaava arvo on funktio, gsub kutsuu sitä jokaiselle osumalle (tai poimitulle osalle) ja käyttää palautusarvoa korvauksena. Palauttakaa nil tai false, jos haluatte säilyttää alkuperäisen osuman. Tämä mahdollistaa dynaamiset, laskennalliset korvaukset.
local env = {NAME="Lua", VERSION="5.4"}
local template = "Welcome to $NAME version $VERSION!"
local result = string.gsub(template, "%$(%w+)", env)
print(result) -- Welcome to Lua version 5.4!
-- Double each number
local s = "a1 b2 c3"
local r = string.gsub(s, "%d+", function(n)
return tostring(tonumber(n) * 2)
end)
print(r) -- a2 b4 c6Taulukko korvauksena
Kun korvaava arvo on taulukko, gsub hakee jokaisen osuman (tai ensimmäisen poimitun osan) taulukosta ja käyttää tulosta. Jos haku palauttaa nil- tai false-arvon, alkuperäinen osuma säilytetään. Tämä sopii erinomaisesti korvaussanakirjoihin.
local abbreviations = {
str = "string",
num = "number",
tbl = "table",
fn = "function",
}
local text = "A str can hold a num or a tbl"
local expanded = string.gsub(text, "%a+", abbreviations)
print(expanded)
-- A string can hold a number or a tablestring.gmatch-funktion perusteet
string.gmatch(s, pattern) palauttaa iteraattorin, joka käy läpi kaikki kuvion pattern osumat merkkijonossa s. Jokainen iteraattorin kutsu palauttaa seuraavan osuman (tai poimitut osat, jos kuviossa on niitä). Tämä on Luassa idiomattinen tapa käydä osumat läpi.
local s = "one=1 two=2 three=3"
-- Iterate all words
for word in string.gmatch(s, "%a+") do
io.write(word .. " ")
end
print() -- one two three
-- Iterate key=value pairs
for k, v in string.gmatch(s, "(%a+)=(%d+)") do
print(k, v)
endMerkkijonojen tokenisointi gmatch-funktiolla
Käyttäkää string.gmatch-funktiota syötteen tokenisointiin: jakakaa teksti tyhjien merkkien kohdalta, jäsentäkää CSV-rivejä tai poimikaa jäsenneltyä tietoa. Kuvio määrittää poimittavan sisällön; kaikkea muuta käsitellään erottimena.
-- Split by whitespace
local function tokenize(s)
local tokens = {}
for token in string.gmatch(s, "%S+") do
tokens[#tokens+1] = token
end
return tokens
end
local toks = tokenize(" hello world lua ")
for i, t in ipairs(toks) do
print(i, t)
end
-- 1 hello 2 world 3 luaURL-parametrien jäsentäminen
Jäsentäkää kyselymerkkijonot käymällä avain–arvo-parit läpi. Kuvio ([^&=]+)=([^&]+) poimii kunkin avaimen ja arvon, jotka on erotettu merkillä = ja joiden välissä ovat &-erottimet.
local url_params = "name=Alice&age=30&city=Istanbul"
local params = {}
for key, value in string.gmatch(url_params, "([^&=]+)=([^&]*)") do
params[key] = value
end
print(params.name) -- Alice
print(params.age) -- 30
print(params.city) -- IstanbulHTML-tunnisteiden poistaminen
Yleinen tekstinkäsittelytehtävä on HTML-tunnisteiden poistaminen merkkijonosta. Käyttäkää string.gsub-funktiota kuvion kanssa, joka täsmää avaaviin ja sulkeviin tunnisteisiin, ja korvatkaa ne tyhjällä merkkijonolla.
local html = "<h1>Hello</h1> <p>World <b>bold</b></p>"
local plain = string.gsub(html, "<[^>]+>", "")
print(plain) -- Hello World bold
-- Replace <br> with newline
local html2 = "line1<br>line2<br/>line3"
local fixed = string.gsub(html2, "<br/?>", "\n")
print(fixed)Erikoismerkkien suojaaminen
Luan kuvioiden erikoismerkit ovat: . + * ? [ ] ^ $ % ( ). Jos haluatte täsmätä niihin literaalisesti, suojatkaa ne merkillä %. Kun käytätte näitä merkkejä sisältäviä literaalisia merkkijonoja, välittäkää true neljäntenä argumenttina string.find-funktiolle kuvioiden täsmäytyksen poistamiseksi käytöstä.
-- Escape a string for use in a pattern
local function escapePattern(s)
return (string.gsub(s, "[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1"))
end
local query = "1+1=2"
local pattern = escapePattern(query)
print(string.find("result: 1+1=2", pattern, 1)) -- 9 13Esiintymien laskeminen
Käyttäkää string.gsub-funktion toista palautusarvoa (korvausten määrää) merkkijonon kuvioesiintymien laskemiseen, vaikka ette tekisi yhtään korvausta.
local text = "banana"
local _, count = string.gsub(text, "a", "")
print("'a' appears " .. count .. " times") -- 3
-- Count words
local sentence = "the quick brown fox"
local _, wordCount = string.gsub(sentence, "%S+", "")
print("Words:", wordCount) -- 4Pikatarkistus
Mitä string.gsub("hello", "l", "L") palauttaa?
Kertaus: gsub ja gmatch
Yhteenveto:
gsub(s, pat, repl, n)— korvaa; repl voi olla merkkijono, taulukko tai funktio%1...%nkorvausmerkkijonoissa viittaavat poimintoihingmatch(s, pat)— käy kaikki osumat läpi- Käyttäkää
%-merkkiä kuvioiden erikoismerkkien suojaamiseen:%.,%+jne. - Laskekaa esiintymät gsub-funktion toisella palautusarvolla
Opi Lua tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 40
- Oppitunnit
- 159
Usein kysytyt kysymykset
Onko oppitunti ”string.gsub ja string.gmatch” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “string.gsub ja string.gmatch”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”string.gsub ja string.gmatch”?
Korvatkaa merkkijonoissa olevia hahmomätsäyksiä ja käykää ne läpi. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”string.gsub ja string.gmatch”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?
Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Merkkijonojen perusteet: yhdistäminen ja pituus
- Alimerkkijonojen etsiminen ja poimiminen
- string.format tulostuksessa
- string.gsub ja string.gmatch