متدهای رشتهای در لوا
متدهای کتابخانه string: upper، lower، rep، reverse، find، sub و جایگزینی
کتابخانه string
لوا یک کتابخانه کامل از توابع کار با رشته دارد. جالب است بدانید رشتهها در لوا «متاجدول» دارند که به آنها اجازه میدهد مثل شیء رفتار کنند:
-- دو روش معادل برای صدا زدن:
string.upper("lua") -- روش ۱: از روی کتابخانه
("lua"):upper() -- روش ۲: متد روی خود رشته!
متدهای پرکاربرد
| متد | کار | مثال |
|---|---|---|
upper(s) | حروف بزرگ | ("lua"):upper() → LUA |
lower(s) | حروف کوچک | ("LUA"):lower() → lua |
len(s) | طول | ("lua"):len() → 3 |
rep(s, n) | تکرار | ("ab"):rep(3) → ababab |
reverse(s) | برعکس | ("lua"):reverse() → aul |
sub(s, i, j) | برش | ("hello"):sub(2, 3) → el |
byte(s, i) | کد کاراکتر | ("A"):byte() → 65 |
char(n) | کاراکتر از کد | string.char(65) → A |
جستجو با find
local s = "برنامهنویسی با لوا"
local start, finish = string.find(s, "لوا")
print(start, finish) -- موقعیت شروع و پایان
if string.find(s, "با") then
print("پیدا شد!")
end
جایگزینی با gsub
gsub (جایگزینی سراسری) یکی از قدرتمندترین توابع لواست:
local s = "من لوا را دوست دارم. لوا عالی است!"
-- جایگزینی همه موارد
local result = string.gsub(s, "لوا", "Lua")
print(result) -- من Lua را دوست دارم. Lua عالی است!
-- شمارش تعداد جایگزینی
local result2, count = string.gsub(s, "لوا", "Lua")
print("تعداد:", count) -- 2
-- محدود کردن تعداد جایگزینی
local result3 = string.gsub(s, "لوا", "Lua", 1)
print(result3) -- فقط اولی جایگزین شد
مقایسه رشتهها
print("abc" == "abc") -- true
print("abc" == "ABC") -- false (حساس به حروف)
-- مقایسه الفبایی (بر اساس کد کاراکترها)
print("apple" < "banana") -- true
print("ABC" < "abc") -- true (حروف بزرگ کوچکترند!)
بررسی شروع و پایان رشته
لوا توابع startsWith/endsWith ندارد، اما میتوان ساخت:
local function startsWith(s, prefix)
return s:sub(1, #prefix) == prefix
end
local function endsWith(s, suffix)
return suffix == "" or s:sub(-#suffix) == suffix
end
print(startsWith("hello.lua", "hello")) -- true
print(endsWith("hello.lua", ".lua")) -- true
جداسازی رشته (Split)
لوا تابع split ندارد! اما با gmatch میتوان ساخت:
local function split(s, delimiter)
local result = {}
for match in string.gmatch(s, "[^" .. delimiter .. "]+") do
table.insert(result, match)
end
return result
end
local parts = split("یک,دو,سه", ",")
for i, p in ipairs(parts) do
print(i, p)
end
این مبحث بخشی از دوره آموزش کامل لوا است.