استخدام string.gsub() للاستبدال
جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 35 من 54.
عند العمل مع السلاسل النصية، غالباً ما تحتاج إلى البحث عن نص واستبداله. تجعل دالة string.gsub() في لغة Lua هذا الأمر سهلاً من خلال إجراء استبدال عام — العثور على جميع حالات ظهور نمط معين واستبدالها بشيء آخر.
تأخذ الصيغة الأساسية ثلاث وسائط: السلسلة الأصلية، والنمط المراد البحث عنه، ونص الاستبدال:
local result = string.gsub(originalString, pattern, replacement)إليك مثال بسيط يستبدل جميع المسافات بشرطات سفلية:
local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned) -- النتيجة: hello_world_from_luaتُعيد الدالة قيمتين: السلسلة النصية المعدلة وعدد عمليات الاستبدال التي تم إجراؤها. يمكنك الحصول على كليهما إذا لزم الأمر:
local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result) -- النتيجة: baz bar baz
print(count) -- النتيجة: 2على عكس بعض دوال السلاسل النصية التي تجد المطابقة الأولى فقط، تقوم string.gsub() باستبدال كل تكرار بشكل افتراضي، مما يجعلها مثالية لمهام تنظيف النصوص مثل إزالة الأحرف غير المرغوب فيها أو توحيد التنسيق.
التحدي
سهلاكتب دالة cleanText تأخذ text وتعيد نسخة منظفة مع استبدال جميع المسافات بشرطات سفلية.
استخدم string.gsub() لاستبدال كل حرف مسافة في النص بحرف شرطة سفلية.
المعاملات:
text(string): النص المراد تنظيفه
الناتج: النص مع استبدال جميع المسافات بشرطات سفلية (string)
ورقة مرجعية
تقوم الدالة string.gsub() بإجراء استبدال عام من خلال البحث عن جميع تكرارات النمط واستبدالها:
local result = string.gsub(originalString, pattern, replacement)مثال على استبدال المسافات بشرطات سفلية:
local text = "hello world from lua"
local cleaned = string.gsub(text, " ", "_")
print(cleaned) -- المخرجات: hello_world_from_luaتعيد الدالة قيمتين: السلسلة النصية المعدلة وعدد الاستبدالات التي تم إجراؤها:
local result, count = string.gsub("foo bar foo", "foo", "baz")
print(result) -- المخرجات: baz bar baz
print(count) -- المخرجات: 2تقوم string.gsub() باستبدال كل تكرار بشكل افتراضي، وليس فقط المطابقة الأولى.
جرّب بنفسك
function cleanText(text)
-- اكتب الكود هنا
end
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية4مقدمة إلى Metatables
ما هو الـ Metatable؟setmetatable و getmetatableالـ Metamethod المسماة __indexالـ Metamethod المسماة __newindexالـ Metamethod المسماة __tostringالـ Metamethods الحسابية - الجزء الأولالـ Metamethods الحسابية - الجزء الثانيملخص - جدول للقراءة فقط7معالجة النصوص المتقدمة
استخدام string.gsub() للاستبدالمقدمة في أنماط النصوصstring.find()string.match()التكرار باستخدام string.gmatch()مراجعة - محلل ملفات السجل2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج