رشتهها در لوا
تعریف رشته، کاراکترهای escape، طول رشته، ایندکس و برش رشته
رشته چیست؟
رشته (String) دنبالهای از کاراکترهاست — مثل نام، جمله یا هر متن دیگری. در لوا رشتهها تغییرناپذیر (immutable) هستند: هر عملی روی رشته، رشته جدیدی میسازد.
تعریف رشته
سه راه برای تعریف رشته در لوا:
local s1 = "نقلقول دوتایی"
local s2 = 'نقلقول تکگانه'
local s3 = [[رشته بلند
که میتواند چند خط باشد
بدون نیاز به escape]]
رشتههای
[[ ]] برای متنهای چندخطی عالی هستند — مثل پیامهای طولانی یا HTML.کاراکترهای Escape
| Escape | معنی |
|---|---|
\n | خط جدید |
\t | تب |
\\ | علامت بکاسلش |
\" | نقلقول دوتایی |
\' | نقلقول تکگانه |
print("خط اول\nخط دوم")
print("ستون۱\tستون۲")
print("او گفت: \"سلام\"")
الحاق رشتهها
برای چسباندن دو رشته از عملگر .. استفاده میشود:
local first = "علی"
local last = "رضایی"
local full = first .. " " .. last
print(full) -- علی رضایی
-- اعداد هم خودکار به رشته تبدیل میشوند
local msg = "سن: " .. 25
print(msg) -- سن: 25
حواستان باشد بین دو نقطه الحاق و اعداد فاصله بگذارید:
1 .. 2 درست است اما 1..2 مبهم است و خطا میدهد!طول رشته با #
local s = "سلام دنیا"
print(#s) -- 9 (تعداد بایتها)
local empty = ""
print(#empty) -- 0
عملگر
# تعداد بایتها را میشمارد، نه کاراکترها! برای متن فارسی (UTF-8) هر حرف ممکن است ۲ بایت باشد. برای شمارش کاراکترهای فارسی از utf8.len() استفاده کنید.دسترسی به کاراکترها
برای گرفتن کد کاراکتر در یک موقعیت:
local s = "hello"
print(s:sub(1, 1)) -- h (کاراکتر اول)
print(string.byte(s, 1)) -- 104 (کد ASCII حرف h)
print(string.char(104)) -- h (برعکس)
برش رشته (substring)
متد sub بخشی از رشته را برمیگرداند:
local s = "برنامهنویسی لوا"
print(s:sub(1, 6)) -- ۶ کاراکتر اول
print(s:sub(-3)) -- ۳ کاراکتر آخر
print(s:sub(4)) -- از کاراکتر ۴ تا آخر
رشتهها تغییرناپذیرند
local s = "لوا"
-- s[1] = "د" -- ❌ خطا! نمیتوان رشته را تغییر داد
-- راه درست: ساخت رشته جدید
s = "د" .. s:sub(2)
print(s) -- دوآ (نمایشی)
تبدیل رشته به عدد و برعکس
local num = tonumber("42") -- 42 (عدد)
local str = tostring(42) -- "42" (رشته)
print("42" + 8) -- 50 (لوا خودکار تبدیل میکند!)
print("3.14" * 2) -- 6.28
این مبحث بخشی از دوره آموزش کامل لوا است.