0Pricing
Lua Academy · درس

‏string.gsub للتحويلات

استبدل الأنماط بسلاسل نصية أو دوال أو عمليات بحث في الجداول عبر gsub

‏string.gsub للتحويلات درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

ما هو string.gsub؟

يستبدل string.gsub(s, pattern, repl, n) occurrences النمط pattern في s بـ repl. ويعيد السلسلة الجديدة وعدد عمليات الاستبدال.

استبدال نصي بسيط

استبدلوا جميع occurrences سلسلة فرعية حرفية.

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 للتحويلات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏string.gsub للتحويلات»؟

استبدل الأنماط بسلاسل نصية أو دوال أو عمليات بحث في الجداول عبر gsub تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «‏string.gsub للتحويلات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. صياغة أنماط Lua
  2. الالتقاط وstring.match
  3. ‏string.gmatch لتقسيم الرموز
  4. ‏string.gsub للتحويلات
← العودة إلى Lua Academy