0Pricing
Lua Academy · บทเรียน

string.gsub สำหรับการแปลง

แทนที่รูปแบบด้วยข้อความ ฟังก์ชัน หรือการค้นจากตารางผ่าน gsub

string.gsub สำหรับการแปลง เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

string.gsub คืออะไร

string.gsub(s, pattern, repl, n) แทนที่ส่วนที่ตรงกับ pattern ใน s ด้วย repl โดยส่งคืนสตริงใหม่และจำนวนการแทนที่

การแทนที่สตริงอย่างง่าย

แทนที่สตริงย่อยตามตัวอักษรที่ปรากฏทั้งหมด

local s = "hello world world"
local result, count = s:gsub("world", "Lua")
print(result, count)  -- hello Lua Lua  2

การจำกัดจำนวนการแทนที่

ส่งอาร์กิวเมนต์ตัวที่สี่เพื่อจำกัดจำนวนการแทนที่

local s = "aaa bbb aaa"
print(s:gsub("aaa", "xxx", 1))  -- xxx bbb aaa  1

การแทนที่ตามรูปแบบ

แทนที่ตัวเลขทั้งหมดด้วยสตริงที่กำหนด

local s = "abc 123 def 456"
print(s:gsub("%d+", "NUM"))  -- abc NUM def NUM  2

การแทนที่ด้วยฟังก์ชัน

เมื่อ repl เป็นฟังก์ชัน ฟังก์ชันนั้นจะถูกเรียกพร้อมค่าที่จับได้แต่ละค่า (หรือผลการจับค่าทั้งหมด) และค่าที่ส่งคืนจะเข้ามาแทนที่ผลการจับคู่นั้น

local s = "price: 100, tax: 15"
local result = s:gsub("%d+", function(n)
  return tostring(tonumber(n) * 1.1)
end)
print(result)  -- price: 110.0, tax: 16.5

การแทนที่ด้วยตาราง

เมื่อ repl เป็นตาราง ผลการจับคู่แต่ละรายการ (หรือค่าที่จับได้) จะถูกใช้เป็นคีย์ และค่าจากตารางจะเข้ามาแทนที่ผลการจับคู่นั้น

local vars = {name="Alice", lang="Lua"}
local tmpl = "Hello, {name}! Welcome to {lang}."
local result = tmpl:gsub("{(%w+)}", vars)
print(result)  -- Hello, Alice! Welcome to Lua.

การตัดช่องว่าง

ใช้ gsub เพื่อลบช่องว่างด้านหน้าและด้านท้ายของสตริง

local function trim(s)
  return s:gsub("^%s+", ""):gsub("%s+$", "")
end
print("[" .. trim("  hello  ") .. "]")  -- [hello]

การเปลี่ยนรูปแบบตัวพิมพ์

ใช้ gsub ร่วมกับฟังก์ชันเพื่อเปลี่ยนตัวอักษรแต่ละตัวเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก

local function toUpper(s)
  return s:gsub("%a", string.upper)
end
print(toUpper("hello world"))  -- HELLO WORLD

การใช้อักขระหลีกกับอักขระพิเศษ

ใช้อักขระหลีกกับอักขระพิเศษของรูปแบบทั้งหมดในสตริง เพื่อให้สามารถใช้สตริงนั้นเป็นรูปแบบตามตัวอักษรได้

local function escapePat(s)
  return s:gsub("[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1")
end

การใช้ค่าจำนวนที่ส่งคืน

ค่าที่ส่งคืนตัวที่สอง (จำนวนการแทนที่) มีประโยชน์สำหรับตรวจสอบว่ามีการแทนที่เกิดขึ้นหรือไม่

local s = "no numbers here"
local result, n = s:gsub("%d+", "X")
if n == 0 then print("nothing replaced") end

รูปแบบสำหรับกลไกแม่แบบ

กลไกแม่แบบอย่างง่ายจะแทนที่ช่องแทนที่ {{key}} ด้วยค่าจากตารางข้อมูล

local function render(tmpl, data)
  return (tmpl:gsub("{{(%w+)}}", data))
end
print(render("Hi {{name}}!", {name="Bob"}))  -- Hi Bob!

คำถามเกี่ยวกับ gsub

เมื่อ repl ใน gsub เป็นฟังก์ชัน ฟังก์ชันนั้นจะได้รับอะไร

สรุป: string.gsub

string.gsub เป็นเครื่องมืออเนกประสงค์สำหรับแปลงสตริง โดยแทนที่ด้วยสตริง ฟังก์ชัน (สำหรับการคำนวณแบบไดนามิก) หรือตาราง (สำหรับค้นหาค่าจากพจนานุกรม) นอกจากนี้ยังส่งคืนจำนวนการแทนที่ด้วย

คำถามที่พบบ่อย

บทเรียน “string.gsub สำหรับการแปลง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “string.gsub สำหรับการแปลง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “string.gsub สำหรับการแปลง”

แทนที่รูปแบบด้วยข้อความ ฟังก์ชัน หรือการค้นจากตารางผ่าน gsub คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “string.gsub สำหรับการแปลง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม

ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ไวยากรณ์รูปแบบ Lua
  2. การจับกลุ่มและ string.match
  3. string.gmatch สำหรับการแยกโทเคน
  4. string.gsub สำหรับการแปลง
← กลับไปที่ Lua Academy