লুয়া (Lua) প্রোগ্রামিং ভাষায় স্ট্রিং (Strings) একটি মৌলিক ডেটা টাইপ, যা টেক্সটের মান ধারণ করতে ব্যবহৃত হয়। লুয়া ভাষায় স্ট্রিংগুলো খুবই শক্তিশালী এবং সহজে ব্যবহারের জন্য অনেক ফিচার সরবরাহ করে, যেমন স্ট্রিং কনক্যাটেনেশন, সাইজ, সাবস্ট্রিং এবং প্যাটার্ন ম্যাচিং। এই টিউটোরিয়ালে লুয়া ভাষায় স্ট্রিংয়ের মৌলিক ব্যবহার এবং বিভিন্ন অপারেশন আলোচনা করা হবে।
১. স্ট্রিং ডিফাইন করা (Defining a String)
লুয়া ভাষায় স্ট্রিং সাধারণত সিঙ্গল কোটেশন (') বা ডাবল কোটেশন (") ব্যবহার করে ডিফাইন করা হয়। উভয় কোটেশন ব্যবহারের মাধ্যমে একই ফলাফল পাওয়া যায়।
উদাহরণ:
str1 = "Hello, World!"
str2 = 'Lua Programming'এখানে str1 এবং str2 দুটি স্ট্রিং ভেরিয়েবল তৈরি করা হয়েছে।
২. স্ট্রিং কনক্যাটেনেশন (String Concatenation)
স্ট্রিং কনক্যাটেনেশন লুয়া ভাষায় .. অপারেটর ব্যবহার করে করা হয়। এটি দুটি বা তার বেশি স্ট্রিং একত্রিত করে।
উদাহরণ:
greeting = "Hello, "
name = "Alice"
message = greeting .. name
print(message) -- আউটপুট: Hello, Aliceএখানে, greeting এবং name স্ট্রিং দুটি একত্রিত হয়ে message তৈরি করেছে।
৩. স্ট্রিং লেন্থ (String Length)
লুয়া ভাষায় স্ট্রিংয়ের দৈর্ঘ্য জানার জন্য # অপারেটর ব্যবহার করা হয়। এটি স্ট্রিংয়ের মধ্যে মোট অক্ষরের সংখ্যা রিটার্ন করে।
উদাহরণ:
str = "Hello, Lua!"
length = #str
print(length) -- আউটপুট: 12এখানে, #str স্ট্রিং str এর দৈর্ঘ্য, অর্থাৎ স্ট্রিংয়ে মোট অক্ষরের সংখ্যা প্রদান করে।
৪. সাবস্ট্রিং (Substring)
লুয়া ভাষায় স্ট্রিংয়ের কোনো অংশ বের করার জন্য string.sub ফাংশন ব্যবহার করা হয়। এই ফাংশনটি একটি স্ট্রিংয়ের নির্দিষ্ট অংশ (সাবস্ট্রিং) প্রদান করে।
সিনট্যাক্স:
string.sub(str, start, end)- start: স্ট্রিংয়ের শুরু ইনডেক্স
- end: স্ট্রিংয়ের শেষ ইনডেক্স (এটি ঐচ্ছিক, যদি না দেওয়া হয় তবে স্ট্রিংয়ের শেষ পর্যন্ত যাবে)
উদাহরণ:
str = "Hello, Lua!"
sub_str = string.sub(str, 1, 5)
print(sub_str) -- আউটপুট: Helloএখানে, string.sub(str, 1, 5) স্ট্রিংয়ের প্রথম ৫টি অক্ষর নিয়ে সাবস্ট্রিং তৈরি করেছে।
৫. স্ট্রিং মেথডস (String Methods)
লুয়া ভাষায় স্ট্রিংয়ের সাথে কাজ করার জন্য বিভিন্ন বিল্ট-ইন মেথড সরবরাহ করা হয়েছে, যেমন:
১. string.upper - স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করে।
str = "hello"
upper_str = string.upper(str)
print(upper_str) -- আউটপুট: HELLO২. string.lower - স্ট্রিংকে ছোট হাতের অক্ষরে রূপান্তর করে।
str = "HELLO"
lower_str = string.lower(str)
print(lower_str) -- আউটপুট: hello৩. string.gmatch - স্ট্রিংয়ের মধ্যে প্যাটার্ন ম্যাচিং করে এবং মেলানো অংশগুলোর উপর লুপ চালাতে ব্যবহৃত হয়।
str = "apple, banana, cherry"
for fruit in string.gmatch(str, "%a+") do
print(fruit)
end
-- আউটপুট:
-- apple
-- banana
-- cherryএখানে, %a+ প্যাটার্নটি এক বা একাধিক অক্ষরের জন্য ম্যাচিং করে।
৬. স্ট্রিং প্যাটার্ন (String Pattern Matching)
লুয়া ভাষায় স্ট্রিং প্যাটার্ন ম্যাচিং শক্তিশালী। আপনি স্ট্রিংয়ের মধ্যে একটি নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে string.match, string.find, এবং string.gmatch ব্যবহার করতে পারেন।
উদাহরণ:
- string.match: স্ট্রিংয়ের মধ্যে প্যাটার্ন মেলালে প্রথম মেলানো অংশ প্রদান করে।
str = "Hello, Lua!"
word = string.match(str, "Hello")
print(word) -- আউটপুট: Hello- string.find: স্ট্রিংয়ের মধ্যে একটি প্যাটার্ন খুঁজে পেলে ইনডেক্স রিটার্ন করে।
str = "Hello, Lua!"
start, finish = string.find(str, "Lua")
print(start, finish) -- আউটপুট: 8 10৭. স্ট্রিং রেপ্লেসমেন্ট (String Replacement)
স্ট্রিংয়ের মধ্যে কিছু পরিবর্তন করতে string.gsub ফাংশন ব্যবহার করা হয়, যা একটি প্যাটার্ন মেলালে তার সাথে সংশ্লিষ্ট অংশটিকে রিপ্লেস করে।
উদাহরণ:
str = "I love Lua programming"
new_str = string.gsub(str, "Lua", "Python")
print(new_str) -- আউটপুট: I love Python programmingএখানে, "Lua" শব্দটি "Python"-এ রিপ্লেস করা হয়েছে।
৮. স্ট্রিং ফর্ম্যাটিং (String Formatting)
স্ট্রিং ফর্ম্যাটিং লুয়াতে string.format ফাংশন দ্বারা করা যায়, যা C-এর printf এর মতো কাজ করে।
উদাহরণ:
name = "Alice"
age = 30
formatted_str = string.format("My name is %s and I am %d years old", name, age)
print(formatted_str) -- আউটপুট: My name is Alice and I am 30 years oldএখানে, string.format ফাংশন ব্যবহার করে স্ট্রিংয়ের মধ্যে ভেরিয়েবলগুলিকে ফর্ম্যাট করা হয়েছে।
সারসংক্ষেপ
স্ট্রিং (Strings) লুয়া ভাষার একটি গুরুত্বপূর্ণ ডেটা টাইপ, যা টেক্সট ডেটা সংরক্ষণ এবং পরিচালনা করতে ব্যবহৃত হয়। লুয়া ভাষায় স্ট্রিং কনক্যাটেনেশন, সাবস্ট্রিং, স্ট্রিং মেথডস, প্যাটার্ন ম্যাচিং, এবং ফর্ম্যাটিংসহ অনেক শক্তিশালী অপারেশন রয়েছে যা স্ট্রিংয়ের সাথে কাজ করা সহজ করে তোলে।
লুয়া ভাষায় স্ট্রিং হ্যান্ডলিং ও ম্যানিপুলেশন অত্যন্ত সহজ এবং নমনীয়। স্ট্রিং হল একটি ডেটা টাইপ যা অক্ষরের সিরিজ ধারণ করে, এবং এতে বিভিন্ন বিল্ট-ইন ফাংশন রয়েছে যা স্ট্রিংয়ের উপর বিভিন্ন ধরনের অপারেশন যেমন কনক্যাটেনেশন, সাবস্ট্রিং, সার্চিং, রূপান্তর ইত্যাদি করতে ব্যবহৃত হয়।
১. স্ট্রিং কনক্যাটেনেশন (String Concatenation)
স্ট্রিং কনক্যাটেনেশন হল দুটি বা তার বেশি স্ট্রিং একসাথে যুক্ত করা। লুয়া ভাষায় স্ট্রিং কনক্যাটেনেশন করতে .. অপারেটর ব্যবহার করা হয়।
উদাহরণ:
firstName = "John"
lastName = "Doe"
fullName = firstName .. " " .. lastName
print(fullName) -- আউটপুট: John Doeএখানে, "John" এবং "Doe" দুটি স্ট্রিংকে কনক্যাটেনেট করে "John Doe" তৈরি করা হয়েছে।
২. স্ট্রিং এর দৈর্ঘ্য (Length of String)
স্ট্রিং এর দৈর্ঘ্য নির্ধারণ করতে লুয়া ভাষায় # অপারেটর ব্যবহার করা হয়।
উদাহরণ:
str = "Hello, World!"
length = #str
print(length) -- আউটপুট: 13এখানে, "Hello, World!" স্ট্রিংটির দৈর্ঘ্য ১৩, যা #str দ্বারা পাওয়া গেছে।
৩. স্ট্রিং সাবস্ট্রিং (Substring)
স্ট্রিংয়ের অংশ (substring) বের করতে string.sub ফাংশন ব্যবহার করা হয়। এটি একটি নির্দিষ্ট অবস্থান থেকে একটি সাবস্ট্রিং প্রদান করে।
সিনট্যাক্স:
string.sub(str, startIndex, endIndex)উদাহরণ:
str = "Hello, World!"
substr = string.sub(str, 1, 5)
print(substr) -- আউটপুট: Helloএখানে, "Hello, World!" স্ট্রিংটির প্রথম পাঁচটি অক্ষর (অথবা 1 থেকে 5 পর্যন্ত) সাবস্ট্রিং হিসেবে বের করা হয়েছে।
৪. স্ট্রিং রিপ্লেসমেন্ট (String Replacement)
স্ট্রিং এর মধ্যে কোনো একটি অংশ রিপ্লেস (বদল) করতে string.gsub ফাংশন ব্যবহার করা হয়।
সিনট্যাক্স:
string.gsub(str, pattern, replacement)উদাহরণ:
str = "I like cats"
newStr = string.gsub(str, "cats", "dogs")
print(newStr) -- আউটপুট: I like dogsএখানে, "I like cats" স্ট্রিংটির মধ্যে "cats" কে "dogs" দিয়ে প্রতিস্থাপন করা হয়েছে।
৫. স্ট্রিং প্যাটার্ন ম্যাচিং (Pattern Matching)
লুয়া ভাষায় স্ট্রিংয়ের মধ্যে প্যাটার্ন (pattern) খুঁজে বের করার জন্য string.match এবং string.find ফাংশন ব্যবহৃত হয়।
১. string.match: প্রথম মিল পাওয়া অংশ বের করা।
str = "Hello, World!"
matchStr = string.match(str, "Hello")
print(matchStr) -- আউটপুট: Hello২. string.find: প্যাটার্নের অবস্থান বের করা।
str = "Hello, World!"
startPos, endPos = string.find(str, "World")
print(startPos, endPos) -- আউটপুট: 8 12এখানে, "Hello, World!" স্ট্রিংয়ের মধ্যে "World" প্যাটার্নের অবস্থান খুঁজে বের করা হয়েছে, যা শুরু হয় ৮ তম অবস্থান থেকে এবং শেষ হয় ১২ তম অবস্থানে।
৬. স্ট্রিং রূপান্তর (String Conversion)
লুয়া ভাষায় স্ট্রিং থেকে সংখ্যা এবং সংখ্যা থেকে স্ট্রিং রূপান্তর করার জন্য tonumber এবং tostring ফাংশন ব্যবহার করা হয়।
১. tonumber: স্ট্রিংকে নাম্বারে রূপান্তর করা।
str = "123"
num = tonumber(str)
print(num) -- আউটপুট: 123২. tostring: নাম্বারকে স্ট্রিংয়ে রূপান্তর করা।
num = 123
str = tostring(num)
print(str) -- আউটপুট: 123এখানে, tonumber স্ট্রিং "123" কে নাম্বারে রূপান্তর করেছে এবং tostring নাম্বার 123 কে স্ট্রিং "123"-এ রূপান্তর করেছে।
৭. স্ট্রিংকে বড়/ছোট অক্ষরে রূপান্তর (Uppercase and Lowercase Conversion)
স্ট্রিংকে বড় অক্ষরে (uppercase) বা ছোট অক্ষরে (lowercase) রূপান্তর করতে string.upper এবং string.lower ফাংশন ব্যবহার করা হয়।
উদাহরণ:
str = "Hello, World!"
upperStr = string.upper(str)
lowerStr = string.lower(str)
print(upperStr) -- আউটপুট: HELLO, WORLD!
print(lowerStr) -- আউটপুট: hello, world!এখানে, "Hello, World!" স্ট্রিংটি বড় অক্ষরে এবং ছোট অক্ষরে রূপান্তরিত হয়েছে।
৮. স্ট্রিং ট্রিম (Trimming String)
স্ট্রিংয়ের শুরু এবং শেষ থেকে অপ্রয়োজনীয় স্পেস (whitespace) মুছে ফেলতে string.match বা string.gsub ফাংশন ব্যবহার করা হয়।
উদাহরণ:
str = " Hello, World! "
trimmedStr = string.match(str, "^%s*(.-)%s*$")
print(trimmedStr) -- আউটপুট: Hello, World!এখানে, string.match ফাংশনটি স্ট্রিংয়ের শুরু এবং শেষের স্পেস মুছে দিয়েছে।
সারসংক্ষেপ
লুয়া ভাষায় স্ট্রিং হ্যান্ডলিং এবং ম্যানিপুলেশন করার জন্য বেশ কিছু শক্তিশালী ফাংশন রয়েছে:
- কনক্যাটেনেশন:
..অপারেটর দ্বারা দুটি স্ট্রিং যোগ করা। - দৈর্ঘ্য:
#অপারেটর দিয়ে স্ট্রিংয়ের দৈর্ঘ্য পাওয়া। - সাবস্ট্রিং:
string.subদিয়ে স্ট্রিংয়ের একটি অংশ বের করা। - রিপ্লেসমেন্ট:
string.gsubদিয়ে স্ট্রিংয়ের অংশ পরিবর্তন করা। - প্যাটার্ন ম্যাচিং:
string.matchএবংstring.findদ্বারা প্যাটার্ন খোঁজা। - রূপান্তর:
tonumberএবংtostringফাংশন দিয়ে ডেটা রূপান্তর করা। - বড়/ছোট অক্ষর:
string.upperএবংstring.lowerদিয়ে স্ট্রিংয়ের কেস পরিবর্তন করা। - ট্রিমিং: স্ট্রিংয়ের অপ্রয়োজনীয় স্পেস মুছে ফেলা।
এই ফাংশনগুলোর মাধ্যমে আপনি স্ট্রিংয়ের সাথে বিভিন্ন ধরনের কার্যক্রম সহজে করতে পারবেন।
লুয়া (Lua) ভাষায় স্ট্রিং কনক্যাটেনেশন এবং স্ট্রিং দৈর্ঘ্য অত্যন্ত গুরুত্বপূর্ণ কাজ, যেগুলো ব্যবহার করে আপনি স্ট্রিংগুলি একত্রিত করতে এবং তাদের দৈর্ঘ্য নির্ধারণ করতে পারেন। এই টিউটোরিয়ালে আমরা স্ট্রিং কনক্যাটেনেশন এবং স্ট্রিং দৈর্ঘ্য কীভাবে কাজ করে এবং কীভাবে এগুলি ব্যবহার করা যায় তা দেখব।
১. স্ট্রিং কনক্যাটেনেশন (String Concatenation)
স্ট্রিং কনক্যাটেনেশন হল দুটি বা ততোধিক স্ট্রিংকে একত্রিত করে একটি নতুন স্ট্রিং তৈরি করা। লুয়া ভাষায় স্ট্রিং কনক্যাটেনেশন করতে .. (ডবল ডট) অপারেটর ব্যবহার করা হয়।
উদাহরণ:
-- স্ট্রিং কনক্যাটেনেশন
greeting = "Hello, " .. "World!"
print(greeting) -- আউটপুট: Hello, World!এখানে, "Hello, " এবং "World!" দুটি স্ট্রিংকে .. অপারেটর দিয়ে একত্রিত করা হয়েছে এবং ফলস্বরূপ "Hello, World!" তৈরি হয়েছে।
একাধিক স্ট্রিং কনক্যাটেনেশন:
name = "Alice"
age = 25
sentence = name .. " is " .. age .. " years old."
print(sentence) -- আউটপুট: Alice is 25 years old.এখানে, "Alice" এবং 25 কে একত্রিত করে একটি পূর্ণাঙ্গ বাক্য তৈরি করা হয়েছে।
২. স্ট্রিং দৈর্ঘ্য (String Length)
লুয়া ভাষায়, একটি স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করতে # অপারেটর ব্যবহার করা হয়। এটি স্ট্রিংয়ের মধ্যে কতটি ক্যারেক্টার আছে তা নির্ধারণ করে।
উদাহরণ:
str = "Hello"
length = #str
print(length) -- আউটপুট: 5এখানে, "Hello" স্ট্রিংয়ের দৈর্ঘ্য হল ৫, কারণ এটি ৫টি ক্যারেক্টার (হ, ই, ল, ল, ও) নিয়ে গঠিত।
অন্য উদাহরণ:
emptyStr = ""
length = #emptyStr
print(length) -- আউটপুট: 0এখানে, একটি খালি স্ট্রিংয়ের দৈর্ঘ্য ০ হবে।
সারসংক্ষেপ
- স্ট্রিং কনক্যাটেনেশন: লুয়া ভাষায়
..অপারেটর দিয়ে দুটি বা ততোধিক স্ট্রিংকে একত্রিত করা হয়। - স্ট্রিং দৈর্ঘ্য: লুয়া ভাষায়
#অপারেটর দিয়ে একটি স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করা হয়, যা স্ট্রিংয়ের মধ্যে ক্যারেক্টারের সংখ্যা জানায়।
এই ফিচারগুলো লুয়া ভাষায় স্ট্রিং ম্যানিপুলেশন করার জন্য খুবই প্রয়োজনীয় এবং গুরুত্বপূর্ণ।
লুয়া (Lua) ভাষায় স্ট্রিং ম্যানিপুলেশনের জন্য একাধিক ফাংশন রয়েছে, যা স্ট্রিং নিয়ে কাজ করতে ডেভেলপারদের সহায়তা করে। এই ফাংশনগুলির মধ্যে জনপ্রিয় এবং শক্তিশালী কিছু ফাংশন হল string.find, string.sub, এবং **string.format**। এই টিউটোরিয়ালে আমরা এসব ফাংশনের ব্যবহার এবং উদাহরণ আলোচনা করব।
১. string.find ফাংশন
string.find ফাংশনটি একটি স্ট্রিং থেকে নির্দিষ্ট সাবস্ট্রিং খুঁজে বের করতে ব্যবহৃত হয়। এটি স্ট্রিংয়ের মধ্যে একটি প্যাটার্ন অনুসন্ধান করে এবং যদি প্যাটার্নটি পাওয়া যায়, তবে তার অবস্থান রিটার্ন করে। এই ফাংশনটি প্রথম দুটি ইনডেক্স (স্ট্রিংয়ের শুরু থেকে প্যাটার্নের প্রথম অক্ষর পর্যন্ত) প্রদান করে।
সিনট্যাক্স:
string.find(str, pattern, [start], [plain])str: স্ট্রিংটি যেখানে প্যাটার্ন খোঁজা হবে।pattern: প্যাটার্ন যা খোঁজা হবে।start: অপশনাল, অনুসন্ধানের শুরু স্থান।plain: অপশনাল, যদিtrueহয়, এটি প্যাটার্নটি সাধারণ টেক্সট হিসেবে দেখবে (প্যাটার্নের বিশেষ চিহ্ন বাদ দিয়ে)।
উদাহরণ:
str = "Hello, World!"
start_pos, end_pos = string.find(str, "World")
print(start_pos) -- আউটপুট: 8
print(end_pos) -- আউটপুট: 12এখানে, string.find ফাংশনটি "Hello, World!" স্ট্রিংয়ের মধ্যে "World" প্যাটার্ন খুঁজে বের করেছে এবং তার অবস্থান (8 থেকে 12) রিটার্ন করেছে।
plain প্যারামিটার ব্যবহারের উদাহরণ:
str = "Hello, (World)!"
-- "World" কে বিশেষ চরিত্র হিসেবে না দেখে সাধারণ টেক্সট হিসেবে খুঁজে
start_pos = string.find(str, "World", 1, true)
print(start_pos) -- আউটপুট: 8এখানে, plain = true সেট করা হয়েছে, ফলে এটি "World" প্যাটার্নকে সাধারণ টেক্সট হিসেবে গণ্য করে খুঁজে।
২. string.sub ফাংশন
string.sub ফাংশনটি একটি স্ট্রিংয়ের একটি সাবস্ট্রিং (উপস্ট্রিং) বের করতে ব্যবহৃত হয়। এটি একটি স্ট্রিং থেকে নির্দিষ্ট অংশের শুরু এবং শেষ অবস্থান নির্ধারণ করে সেই অংশটি রিটার্ন করে।
সিনট্যাক্স:
string.sub(str, start, [end])str: স্ট্রিংটি যার সাবস্ট্রিং বের করতে হবে।start: সাবস্ট্রিংয়ের শুরু অবস্থান।end: অপশনাল, সাবস্ট্রিংয়ের শেষ অবস্থান (যদি না দেওয়া হয়, এটি স্ট্রিংয়ের শেষ পর্যন্ত ধরবে)।
উদাহরণ:
str = "Hello, World!"
sub_str = string.sub(str, 1, 5)
print(sub_str) -- আউটপুট: Helloএখানে, string.sub ফাংশনটি স্ট্রিংয়ের ১ম থেকে ৫ম পর্যন্ত অংশ বের করেছে, যা "Hello"।
নেগেটিভ ইনডেক্স ব্যবহার:
string.sub ফাংশনটি নেগেটিভ ইনডেক্সও গ্রহণ করে, যার মাধ্যমে স্ট্রিংয়ের শেষ থেকে শুরু করা যায়।
str = "Hello, World!"
sub_str = string.sub(str, -6, -2)
print(sub_str) -- আউটপুট: Worldএখানে, string.sub ফাংশনটি স্ট্রিংয়ের শেষ থেকে ৬ম এবং ২য় থেকে সাবস্ট্রিং বের করেছে, যা "World"।
৩. string.format ফাংশন
string.format ফাংশনটি স্ট্রিংকে একটি নির্দিষ্ট ফরম্যাটে কনভার্ট করতে ব্যবহৃত হয়। এটি অন্যান্য প্রোগ্রামিং ভাষার printf এর মতো কাজ করে, যেখানে আপনি স্ট্রিংয়ের মধ্যে ভ্যালু প্লেসহোল্ডার ব্যবহার করে মান ইনজেক্ট করতে পারেন।
সিনট্যাক্স:
string.format(formatstring, ...)formatstring: একটি ফরম্যাট স্ট্রিং যেখানে প্লেসহোল্ডার থাকবে।...: প্লেসহোল্ডারের জন্য যেকোনো মান পাস করা হবে।
উদাহরণ:
str = string.format("Hello, %s! You are %d years old.", "Alice", 25)
print(str) -- আউটপুট: Hello, Alice! You are 25 years old.এখানে, %s স্ট্রিংয়ের জন্য এবং %d ইন্টিজারের জন্য প্লেসহোল্ডার। এই ফরম্যাট স্ট্রিংয়ের মধ্যে Alice এবং 25 মান ইনজেক্ট করা হয়েছে।
অন্যান্য ফরম্যাট:
%s: স্ট্রিং।%d: পূর্ণসংখ্যা (integer)।%f: দশমিক সংখ্যা (float)।%x: হেক্সাডেসিমেল সংখ্যা।%c: চরিত্র (character)।
str = string.format("Price: $%.2f", 19.99)
print(str) -- আউটপুট: Price: $19.99এখানে, %.2f ফরম্যাটটি দশমিক সংখ্যাকে দুটি দশমিক পর্যন্ত দেখাতে ব্যবহার করা হয়েছে।
সারসংক্ষেপ
লুয়া ভাষায় স্ট্রিং ম্যানিপুলেশন এবং ফরম্যাটিংয়ের জন্য শক্তিশালী ফাংশন রয়েছে:
string.find: একটি স্ট্রিং থেকে প্যাটার্ন খুঁজে বের করার জন্য ব্যবহৃত হয়।string.sub: একটি স্ট্রিং থেকে নির্দিষ্ট অংশ (সাবস্ট্রিং) বের করার জন্য ব্যবহৃত হয়।string.format: স্ট্রিংয়ের মধ্যে ফরম্যাটেড মান ইনজেক্ট করার জন্য ব্যবহৃত হয়, যা অন্যান্য প্রোগ্রামিং ভাষারprintfফাংশনের মতো।
এই ফাংশনগুলির মাধ্যমে আপনি লুয়া ভাষায় স্ট্রিং ম্যানিপুলেশন করতে পারবেন খুব সহজে।
লুয়া (Lua) ভাষায় স্ট্রিং প্যাটার্নস এবং প্যাটার্ন ম্যাচিং (Pattern Matching) খুবই শক্তিশালী এবং নমনীয় ফিচার। এই ফিচারের মাধ্যমে আপনি স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে, স্ট্রিং রূপান্তর করতে এবং স্ট্রিং-এর সাথে সম্পর্কিত কাজগুলো সহজে করতে পারেন। লুয়া ভাষায় string.match এবং string.gmatch এর মতো ফাংশন দিয়ে স্ট্রিং প্যাটার্নস ব্যবহার করা হয়।
১. স্ট্রিং প্যাটার্নস (String Patterns)
স্ট্রিং প্যাটার্নস হল একটি বিশেষ সিনট্যাক্স যা স্ট্রিংয়ে নির্দিষ্ট কিছু তথ্য বা উপাদান খুঁজে বের করতে ব্যবহৃত হয়। এটি সাধারণত স্ট্রিংয়ে নির্দিষ্ট চরিত্র, শব্দ বা অক্ষর সিকোয়েন্সের অনুসন্ধান এবং মিলান করতে সাহায্য করে।
স্ট্রিং প্যাটার্নের মৌলিক উপাদান
%a: একটি অক্ষর (A-Z, a-z)%d: একটি ডিজিট (0-9)%s: একটি সাদা স্থান (space, tab, newline)%w: একটি alphanumeric অক্ষর (A-Z, a-z, 0-9)%p: একটি পাংচুয়েশন চিহ্ন (.,!?; etc.)%l: একটি ছোট অক্ষর (a-z)%u: একটি বড় অক্ষর (A-Z)%x: একটি হেক্সাডেসিমাল ডিজিট (0-9, A-F)
এছাড়া, আপনি প্যাটার্নের মধ্যে [], (), *, +, - প্রভৃতি ব্যবহার করতে পারেন স্ট্রিং মিলানোর শর্ত আরও কঠিন বা নমনীয় করার জন্য।
২. প্যাটার্ন ম্যাচিং (Pattern Matching)
লুয়া ভাষায় প্যাটার্ন ম্যাচিং স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন অনুসন্ধান করার জন্য ব্যবহৃত হয়। স্ট্রিং প্যাটার্নগুলো ব্যবহার করে আপনি স্ট্রিংয়ের মধ্যে নির্দিষ্ট তথ্য খুঁজে বের করতে পারেন।
২.১. string.match ফাংশন
string.match ফাংশনটি একটি স্ট্রিংয়ের মধ্যে প্যাটার্ন ম্যাচ করে প্রথম মিল পাওয়া অংশটি রিটার্ন করে।
উদাহরণ:
local str = "Hello, world!"
local result = string.match(str, "Hello")
print(result) -- আউটপুট: Helloএখানে, string.match "Hello" প্যাটার্নটি স্ট্রিং str এর মধ্যে অনুসন্ধান করছে এবং প্রথম মিল পাওয়া অংশ (যা "Hello") রিটার্ন করছে।
২.২. string.gmatch ফাংশন
string.gmatch ফাংশনটি প্যাটার্নের সাথে মিলে যাওয়ার প্রতিটি অংশ খুঁজে বের করে এবং তা রিটার্ন করে। এটি একটি iterator প্রদান করে, যার মাধ্যমে আপনি একাধিক ম্যাচগুলি একে একে সংগ্রহ করতে পারেন।
উদাহরণ:
local str = "apple, banana, cherry"
for fruit in string.gmatch(str, "%a+") do
print(fruit)
endএখানে, %a+ প্যাটার্নটি স্ট্রিংয়ের মধ্যে যেকোনো আলফাবেটিক শব্দ খুঁজে বের করবে। এই উদাহরণে আউটপুট হবে:
apple
banana
cherry২.৩. string.find ফাংশন
string.find ফাংশনটি একটি প্যাটার্নের অবস্থান এবং দৈর্ঘ্য রিটার্ন করে।
উদাহরণ:
local str = "Hello, world!"
local start_pos, end_pos = string.find(str, "world")
print(start_pos, end_pos) -- আউটপুট: 8 12এখানে, string.find "world" প্যাটার্নটি খুঁজে বের করেছে এবং এর স্টার্ট এবং এন্ড পজিশন রিটার্ন করেছে, যা যথাক্রমে 8 এবং 12।
২.৪. string.sub ফাংশন
string.sub ফাংশনটি স্ট্রিংয়ের একটি অংশ কাটে এবং রিটার্ন করে। এটি সাধারণত প্যাটার্ন ম্যাচিংয়ের পর যেকোনো অংশ সংগ্রহ করতে ব্যবহৃত হয়।
উদাহরণ:
local str = "Hello, world!"
local sub_str = string.sub(str, 1, 5)
print(sub_str) -- আউটপুট: Helloএখানে, string.sub প্রথম ৫টি চরিত্র (অর্থাৎ "Hello") সংগ্রহ করেছে।
৩. প্যাটার্ন ম্যাচিং এর কিছু গুরুত্বপূর্ণ উদাহরণ
৩.১. সিম্পল প্যাটার্ন
local str = "My age is 25"
local result = string.match(str, "%d+") -- প্রথম ডিজিট খুঁজে বের করবে
print(result) -- আউটপুট: 25এখানে, %d+ প্যাটার্নটি স্ট্রিংয়ের মধ্যে ডিজিটগুলিকে খুঁজে বের করবে এবং প্রথম ম্যাচ (25) রিটার্ন করবে।
৩.২. স্ট্রিংয়ের মধ্যে আলফাবেটিক শব্দ খোঁজা
local str = "I love Lua programming"
local word = string.match(str, "%a+")
print(word) -- আউটপুট: Iএখানে, %a+ প্যাটার্নটি প্রথম আলফাবেটিক শব্দ (এখানে "I") রিটার্ন করবে।
৩.৩. সঠিক ফর্ম্যাটে ইমেইল যাচাই
local email = "user@example.com"
local result = string.match(email, "([%w%.%-]+)@([%w%-]+)%.([%a]+)")
print(result) -- আউটপুট: user@example.comএখানে, প্যাটার্নটি একটি সঠিক ইমেইল ঠিকানা যাচাই করছে।
সারসংক্ষেপ
লুয়া ভাষায় স্ট্রিং প্যাটার্নস এবং প্যাটার্ন ম্যাচিং একটি অত্যন্ত শক্তিশালী ফিচার, যা স্ট্রিংয়ের মধ্যে নির্দিষ্ট তথ্য বা উপাদান খুঁজে বের করতে, স্ট্রিং রূপান্তর করতে এবং স্ট্রিং সম্পর্কিত কাজগুলো সহজে করতে সাহায্য করে।
string.match: একটি প্যাটার্নের প্রথম ম্যাচ খুঁজে বের করে।string.gmatch: একাধিক প্যাটার্ন ম্যাচ খুঁজে বের করে।string.find: প্যাটার্নের অবস্থান খুঁজে বের করে।string.sub: স্ট্রিংয়ের একটি অংশ কাটে।
এই প্যাটার্ন ম্যাচিং ফাংশনগুলো ব্যবহার করে আপনি আপনার স্ট্রিংয়ের উপাদানগুলোর সাথে অত্যন্ত নমনীয়ভাবে কাজ করতে পারবেন।
Read more