স্ট্রিং এবং রেগুলার এক্সপ্রেশন (Regular Expressions) জুলিয়া ভাষায় অত্যন্ত গুরুত্বপূর্ণ। স্ট্রিং ব্যবহৃত হয় টেক্সট ডেটা প্রক্রিয়া করতে, এবং রেগুলার এক্সপ্রেশন ব্যবহৃত হয় টেক্সট থেকে প্যাটার্ন বা নির্দিষ্ট তথ্য খুঁজে বের করতে।
নিচে স্ট্রিং এবং রেগুলার এক্সপ্রেশন সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. স্ট্রিং (Strings) in Julia
স্ট্রিং হলো এক ধরনের ডেটা টাইপ যা টেক্সট বা অক্ষরের সিকোয়েন্স ধারণ করে। জুলিয়া ভাষায় স্ট্রিংগুলি ডাবল কোটস "" দিয়ে চিহ্নিত করা হয়।
স্ট্রিং ডিফাইনেশন
str = "Hello, World!" # স্ট্রিং ডিফাইন করা
println(str) # Output: Hello, World!এখানে, "Hello, World!" একটি স্ট্রিং এবং println() ব্যবহার করে এটি আউটপুট হিসেবে প্রিন্ট করা হয়েছে।
স্ট্রিং কনক্যাটেনেশন (Concatenation)
স্ট্রিংগুলোকে একত্রিত করতে * অপারেটর ব্যবহার করা হয়।
str1 = "Hello"
str2 = "World"
greeting = str1 * ", " * str2 # Concatenation
println(greeting) # Output: Hello, Worldস্ট্রিং স্লাইসিং (String Slicing)
স্ট্রিংয়ের নির্দিষ্ট অংশ বের করতে [] অপারেটর ব্যবহার করা হয়।
str = "Hello, World!"
substring = str[1:5] # Slice from index 1 to 5
println(substring) # Output: Helloস্ট্রিং প্যারামিটারাইজেশন (String Interpolation)
স্ট্রিং ইন্টারপোলেশন ব্যবহার করে স্ট্রিংয়ের মধ্যে ভেরিয়েবল ইনজেক্ট করা যায়। স্ট্রিং ইন্টারপোলেশনে $ চিহ্ন ব্যবহৃত হয়।
name = "Alice"
greeting = "Hello, $name!" # String Interpolation
println(greeting) # Output: Hello, Alice!স্ট্রিং ফাংশন (String Functions)
জুলিয়া ভাষায় স্ট্রিং সম্পর্কিত অনেক বিল্ট-ইন ফাংশন রয়েছে:
length(): স্ট্রিংয়ের দৈর্ঘ্য বের করাuppercase(): স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করাlowercase(): স্ট্রিংকে ছোট হাতের অক্ষরে রূপান্তর করাreplace(): স্ট্রিংয়ের কোনো অংশ পরিবর্তন করা
str = "Hello, World!"
println(length(str)) # Output: 13
println(uppercase(str)) # Output: HELLO, WORLD!
println(lowercase(str)) # Output: hello, world!
println(replace(str, "World" => "Julia")) # Output: Hello, Julia!২. রেগুলার এক্সপ্রেশন (Regular Expressions) in Julia
রেগুলার এক্সপ্রেশন (RegEx) হলো একটি প্যাটার্ন যা স্ট্রিংয়ে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়। এটি টেক্সট ম্যানিপুলেশন, ভ্যালিডেশন এবং খোঁজার জন্য ব্যবহৃত হয়।
রেগুলার এক্সপ্রেশন ব্যবহার করা
জুলিয়া ভাষায় Regex() ফাংশন ব্যবহার করে রেগুলার এক্সপ্রেশন তৈরি করা হয় এবং match() বা occursin() ফাংশন দিয়ে প্যাটার্ন খোঁজা হয়।
Regex প্যাটার্ন তৈরি করা
pattern = r"\d{3}-\d{2}-\d{4}" # Match SSN format (XXX-XX-XXXX)এখানে, \d মানে ডিজিট এবং {n} মানে n বার রিপিট হতে হবে।
Match Function
match() ফাংশন দিয়ে প্যাটার্ন স্ট্রিংয়ের মধ্যে খুঁজে বের করা হয়:
str = "My SSN is 123-45-6789"
pattern = r"\d{3}-\d{2}-\d{4}"
m = match(pattern, str)
println(m.match) # Output: 123-45-6789এখানে, match() ফাংশনটি স্ট্রিং str তে pattern খুঁজে পেয়েছে এবং m.match এর মাধ্যমে মেলানো অংশ দেখানো হয়েছে।
Occursin Function
occursin() ফাংশন দিয়ে নির্দিষ্ট প্যাটার্ন স্ট্রিংয়ে রয়েছে কিনা তা চেক করা হয়।
str = "I have a phone number 555-1234"
pattern = r"\d{3}-\d{4}"
println(occursin(pattern, str)) # Output: trueএখানে, occursin() চেক করছে স্ট্রিং str তে প্যাটার্ন \d{3}-\d{4} (যা ফোন নম্বরের মতো দেখতে) বিদ্যমান কিনা।
রেগুলার এক্সপ্রেশন প্যাটার্ন উদাহরণ
- ইমেইল যাচাই (Email Validation):
email_pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
email = "example@email.com"
println(occursin(email_pattern, email)) # Output: trueএখানে, প্যাটার্নটি ইমেইল ঠিকানার ফরম্যাট যাচাই করবে।
- স্ট্রিংয়ের মধ্যে শুধুমাত্র সংখ্যা খোঁজা:
pattern = r"\d+" # Match one or more digits
str = "There are 123 apples"
println(match(pattern, str).match) # Output: 123এখানে, প্যাটার্ন \d+ ডিজিটের এক বা একাধিক সংখ্যা খুঁজে বের করবে।
৩. কিছু সাধারণ রেগুলার এক্সপ্রেশন প্যাটার্ন
\d: একক ডিজিট (0-9)\w: একক আলফানিউমেরিক ক্যারেক্টার (a-z, A-Z, 0-9, _)\s: সাদা স্থান (স্পেস, ট্যাব, newline).: যেকোনো একক ক্যারেক্টার^: স্ট্রিংয়ের শুরু$: স্ট্রিংয়ের শেষ[]: নির্দিষ্ট ক্যারেক্টারগুলোর মধ্যে একটিকে ম্যাচ করবে (যেমন,[a-z])
সারসংক্ষেপ
স্ট্রিং এবং রেগুলার এক্সপ্রেশন জুলিয়া ভাষায় টেক্সট ম্যানিপুলেশন এবং তথ্য খোঁজার জন্য খুবই গুরুত্বপূর্ণ। স্ট্রিং এর মাধ্যমে টেক্সট ডেটা সংরক্ষণ এবং প্রক্রিয়া করা যায়, যেমন স্ট্রিং কনক্যাটেনেশন, স্লাইসিং, এবং স্ট্রিং ফাংশন ব্যবহার করা। রেগুলার এক্সপ্রেশন ব্যবহার করে স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খোঁজা এবং যাচাই করা সম্ভব, যা ডেটা ভ্যালিডেশন এবং ম্যানিপুলেশনের জন্য খুবই কার্যকর।
String হল একটি ডেটা টাইপ যা অক্ষর (characters) বা টেক্সটের একটি সিরিজ সংরক্ষণ করে। জুলিয়া ভাষায়, Strings ব্যবহৃত হয় টেক্সট তথ্য সংরক্ষণ এবং প্রক্রিয়াকরণের জন্য। Strings সাধারণত বাক্য, শব্দ, নাম, ঠিকানা, ইমেইল ইত্যাদি প্রতিনিধিত্ব করতে ব্যবহৃত হয়।
জুলিয়া ভাষায় String টেক্সট ডেটা স্টোর করতে দুটি কোড-ব্লক ব্যবহার করা হয়: একক কোট (single quotes) এবং ডাবল কোট (double quotes)। তবে, Strings এর ক্ষেত্রে শুধু ডাবল কোট ব্যবহার করা হয়।
১. Strings ডিফাইন করা
স্ট্রিং ডিফাইন করতে সাধারণত ডাবল কোট ব্যবহার করা হয়।
সিনট্যাক্স:
string_variable = "This is a string."উদাহরণ:
name = "Alice"
greeting = "Hello, " * name # String concatenation
println(greeting) # আউটপুট: Hello, Aliceএখানে, "Hello, " এবং "Alice" দুটি স্ট্রিংকে concatenate করা হয়েছে * অপারেটরের মাধ্যমে।
২. স্ট্রিং অপারেশন
জুলিয়া ভাষায় স্ট্রিং এর সাথে বিভিন্ন অপারেশন করা যায়। কিছু গুরুত্বপূর্ণ অপারেশন হলো:
স্ট্রিং যুক্ত করা (Concatenation):
- দুটি বা আরও স্ট্রিং একত্রিত করতে
*অপারেটর ব্যবহার করা হয়।
উদাহরণ:
str1 = "Hello, " str2 = "World!" combined = str1 * str2 # Concatenation println(combined) # আউটপুট: Hello, World!- দুটি বা আরও স্ট্রিং একত্রিত করতে
স্ট্রিং এর দৈর্ঘ্য (Length):
- একটি স্ট্রিং এর দৈর্ঘ্য জানাতে
length()ফাংশন ব্যবহার করা হয়।
উদাহরণ:
greeting = "Hello" println(length(greeting)) # আউটপুট: 5- একটি স্ট্রিং এর দৈর্ঘ্য জানাতে
স্ট্রিং টু লোয়ার/আপার কেস (Lowercase/Uppercase):
- স্ট্রিংকে ছোট হাতের অক্ষরে বা বড় হাতের অক্ষরে রূপান্তর করতে
lowercase()এবংuppercase()ফাংশন ব্যবহার করা হয়।
উদাহরণ:
word = "Hello" println(lowercase(word)) # আউটপুট: hello println(uppercase(word)) # আউটপুট: HELLO- স্ট্রিংকে ছোট হাতের অক্ষরে বা বড় হাতের অক্ষরে রূপান্তর করতে
স্ট্রিং স্লাইসিং (String Slicing):
- স্ট্রিংয়ের নির্দিষ্ট অংশ বের করতে স্ট্রিং স্লাইসিং করা হয়।
উদাহরণ:
text = "Hello, World!" println(text[1:5]) # আউটপুট: Helloস্ট্রিং এর মধ্যে সাবস্ট্রিং খুঁজে বের করা (Finding Substrings):
- স্ট্রিং এর মধ্যে কোনো নির্দিষ্ট সাবস্ট্রিং খুঁজতে
occursin()ফাংশন ব্যবহার করা হয়।
উদাহরণ:
sentence = "I love Julia programming." println(occursin("Julia", sentence)) # আউটপুট: true- স্ট্রিং এর মধ্যে কোনো নির্দিষ্ট সাবস্ট্রিং খুঁজতে
স্ট্রিং থেকে আন্ডারস্কোর বা স্পেস রিমুভ করা (Removing Whitespace):
- স্ট্রিংয়ের শুরুর এবং শেষের ফাঁকা স্থান মুছে ফেলতে
strip()ফাংশন ব্যবহার করা হয়।
উদাহরণ:
text = " Hello, World! " println(strip(text)) # আউটপুট: Hello, World!- স্ট্রিংয়ের শুরুর এবং শেষের ফাঁকা স্থান মুছে ফেলতে
৩. স্ট্রিং ইন্টারপোলেশন
স্ট্রিং ইন্টারপোলেশন হল একটি বিশেষ বৈশিষ্ট্য যেখানে আপনি স্ট্রিং-এর মধ্যে চলক (variable) বা এক্সপ্রেশন সরাসরি ইনজেক্ট করতে পারেন। স্ট্রিং ইন্টারপোলেশন করতে $ সাইন ব্যবহার করা হয়।
সিনট্যাক্স:
name = "Alice"
greeting = "Hello, $name!" # ইন্টারপোলেশন
println(greeting) # আউটপুট: Hello, Alice!এখানে, $name স্ট্রিংয়ের মধ্যে ব্যবহার করা হয়েছে এবং এটি "Alice" দিয়ে প্রতিস্থাপিত হয়েছে।
৪. স্ট্রিং থেকে চরিত্র খোঁজা (Searching for a Character)
স্ট্রিং থেকে একটি নির্দিষ্ট চরিত্র খুঁজতে findfirst() বা findall() ফাংশন ব্যবহার করা হয়।
উদাহরণ:
text = "Hello, World!"
println(findfirst(isequal('o'), text)) # আউটপুট: 5এখানে, 'o' চরিত্রটি স্ট্রিংয়ের ৫ম স্থানে আছে।
৫. স্ট্রিং থেকে সংখ্যা বের করা (Extracting Numbers from a String)
স্ট্রিংয়ের মধ্যে থেকে সংখ্যা বের করতে parse() ফাংশন ব্যবহার করা হয়।
উদাহরণ:
num_str = "123"
num = parse(Int, num_str)
println(num) # আউটপুট: 123সারসংক্ষেপ
- String হল একটি ডেটা টাইপ যা অক্ষর বা টেক্সট ধারণ করতে ব্যবহৃত হয়।
- জুলিয়া ভাষায় স্ট্রিং তৈরি করতে ডাবল কোট ব্যবহার করা হয়।
- স্ট্রিং অপারেশন যেমন যুক্ত করা, দৈর্ঘ্য বের করা, কেস পরিবর্তন, স্লাইসিং, সাবস্ট্রিং খোঁজা, এবং ইন্টারপোলেশন খুবই সহজ এবং কার্যকর।
- String ডেটা টাইপটি দৈনিক প্রোগ্রামিং কাজের জন্য অপরিহার্য, যেমন টেক্সট বিশ্লেষণ, রিপোর্ট তৈরি এবং ব্যবহারকারীর ইনপুট সংগ্রহের জন্য।
জুলিয়া প্রোগ্রামিং ভাষায় স্ট্রিং (String) পরিচালনা একটি গুরুত্বপূর্ণ বিষয়, বিশেষ করে যখন ডেটা প্রক্রিয়াকরণ এবং আউটপুট প্রদর্শনের কাজ করতে হয়। জুলিয়া স্ট্রিং কনক্যাটেনেশন (Concatenation), ইন্টারপোলেশন (Interpolation), এবং ম্যানিপুলেশন (Manipulation) খুবই সহজ এবং শক্তিশালী পদ্ধতিতে সমর্থন করে।
নিচে স্ট্রিং কনক্যাটেনেশন, ইন্টারপোলেশন এবং ম্যানিপুলেশন সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. String Concatenation (স্ট্রিং কনক্যাটেনেশন)
স্ট্রিং কনক্যাটেনেশন হল একাধিক স্ট্রিং একত্রিত করে একটি নতুন স্ট্রিং তৈরি করা। জুলিয়াতে স্ট্রিং কনক্যাটেনেশনের জন্য * অপারেটর ব্যবহার করা হয়।
সিনট্যাক্স:
string1 * string2উদাহরণ ১: স্ট্রিং কনক্যাটেনেশন
str1 = "Hello"
str2 = "World"
result = str1 * " " * str2 # স্পেস সহ দুটি স্ট্রিং যোগ করা
println(result) # আউটপুট হবে: Hello Worldএখানে, দুটি স্ট্রিং "Hello" এবং "World" একটি স্পেস সহ একত্রিত করা হয়েছে এবং আউটপুট হবে "Hello World"।
উদাহরণ ২: একাধিক স্ট্রিং কনক্যাটেনেশন
first_name = "John"
last_name = "Doe"
full_name = first_name * " " * last_name # নামের মধ্যে স্পেস যোগ করা
println(full_name) # আউটপুট হবে: John Doe২. String Interpolation (স্ট্রিং ইন্টারপোলেশন)
স্ট্রিং ইন্টারপোলেশন হল এমন একটি পদ্ধতি যার মাধ্যমে ভেরিয়েবল বা এক্সপ্রেশনকে স্ট্রিংয়ের মধ্যে সরাসরি ইনসার্ট করা হয়। জুলিয়াতে স্ট্রিং ইন্টারপোলেশনের জন্য $ সিম্বল ব্যবহার করা হয়।
সিনট্যাক্স:
"Some text $variable"উদাহরণ ১: স্ট্রিং ইন্টারপোলেশন
name = "Alice"
greeting = "Hello, $name!" # $name ইন্টারপোলেশন ব্যবহার
println(greeting) # আউটপুট হবে: Hello, Alice!এখানে, $name ইন্টারপোলেশন দ্বারা "Alice" নামটি স্ট্রিংয়ে যুক্ত হয়েছে এবং আউটপুট "Hello, Alice!" প্রদর্শিত হয়েছে।
উদাহরণ ২: এক্সপ্রেশন ইন্টারপোলেশন
a = 5
b = 10
result = "The sum of $a and $b is $(a + b)." # এক্সপ্রেশন ইন্টারপোলেশন
println(result) # আউটপুট হবে: The sum of 5 and 10 is 15.এখানে, স্ট্রিংয়ের মধ্যে সরাসরি a + b এক্সপ্রেশন ইন্টারপোলেট করা হয়েছে, যা হিসাব করে ফলাফল দেখাবে।
৩. String Manipulation (স্ট্রিং ম্যানিপুলেশন)
স্ট্রিং ম্যানিপুলেশন হল স্ট্রিংয়ের উপর বিভিন্ন কাজ করা, যেমন স্ট্রিংয়ের দৈর্ঘ্য জানা, অংশ বের করা, কনভার্সন ইত্যাদি। জুলিয়া স্ট্রিং ম্যানিপুলেশনের জন্য অনেকটা বিল্ট-ইন ফাংশন সরবরাহ করে।
১. স্ট্রিং এর দৈর্ঘ্য জানা
str = "Hello, World!"
length_of_str = length(str)
println(length_of_str) # আউটপুট হবে: 13এখানে, length() ফাংশন দ্বারা স্ট্রিংয়ের দৈর্ঘ্য বের করা হয়েছে।
২. স্ট্রিংয়ের কিছু অংশ বের করা
str = "Hello, World!"
substring = str[1:5] # প্রথম ৫টি অক্ষর বের করা
println(substring) # আউটপুট হবে: Helloএখানে, str[1:5] দ্বারা স্ট্রিংয়ের প্রথম পাঁচটি অক্ষর বের করা হয়েছে।
৩. স্ট্রিং কনভার্সন
Lowercase:
lowercase()ফাংশন ব্যবহার করে স্ট্রিংকে ছোট হাতের অক্ষরে রূপান্তর করা হয়।str = "Hello, World!" lower_str = lowercase(str) println(lower_str) # আউটপুট হবে: hello, world!Uppercase:
uppercase()ফাংশন ব্যবহার করে স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করা হয়।str = "Hello, World!" upper_str = uppercase(str) println(upper_str) # আউটপুট হবে: HELLO, WORLD!
৪. স্ট্রিং থেকে নির্দিষ্ট অক্ষর সরানো
str = "Hello, World!"
new_str = replace(str, "World" => "Julia")
println(new_str) # আউটপুট হবে: Hello, Julia!এখানে, replace() ফাংশন ব্যবহার করে "World" কে "Julia"-এ রূপান্তর করা হয়েছে।
৫. স্ট্রিং ট্রিমিং (Whitespace মুছে ফেলা)
str = " Hello, World! "
trimmed_str = strip(str)
println(trimmed_str) # আউটপুট হবে: Hello, World!এখানে, strip() ফাংশনটি স্ট্রিংয়ের শুরু এবং শেষের সাদা স্থান (whitespace) মুছে ফেলেছে।
সারসংক্ষেপ
- String Concatenation: জুলিয়াতে স্ট্রিং কনক্যাটেনেশন সহজ, যেখানে
*অপারেটর ব্যবহার করে একাধিক স্ট্রিং যোগ করা যায়। - String Interpolation: স্ট্রিং ইন্টারপোলেশন
$সিম্বল ব্যবহার করে ভেরিয়েবল বা এক্সপ্রেশনকে স্ট্রিংয়ের মধ্যে সন্নিবেশিত করতে সহায়ক। - String Manipulation: জুলিয়া স্ট্রিং ম্যানিপুলেশনের জন্য বিভিন্ন ফাংশন প্রদান করে, যেমন
length(),lowercase(),uppercase(),replace(), এবংstrip()যা স্ট্রিংয়ের দৈর্ঘ্য, রূপান্তর এবং পরিবর্তন করতে সহায়ক।
স্ট্রিং ব্যবস্থাপনা এবং ম্যানিপুলেশন জুলিয়া প্রোগ্রামিং ভাষায় একটি শক্তিশালী টুল, যা বিভিন্ন ধরনের ডেটা প্রক্রিয়াকরণের কাজের জন্য অত্যন্ত কার্যকর।
Regular Expressions (RegEx) হলো একটি বিশেষ ধরনের প্যাটার্ন যা স্ট্রিং (string) এর মধ্যে নির্দিষ্ট মাপকাঠি অনুযায়ী মেলানো (matching) এবং অনুসন্ধান করার জন্য ব্যবহৃত হয়। এটি একাধিক স্ট্রিং বা টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করতে এবং সেই অনুযায়ী টেক্সট প্রক্রিয়াজাত করতে সাহায্য করে। জুলিয়া প্রোগ্রামিং ভাষায় স্ট্রিং ম্যানিপুলেশন এবং প্যাটার্ন অনুসন্ধান করার জন্য Regex খুবই শক্তিশালী একটি টুল।
Regular Expressions (RegEx) এর মৌলিক ধারণা
RegEx একটি বিশেষ ভাষা যা স্ট্রিং প্যাটার্ন তৈরি করতে ব্যবহৃত হয়। এটি স্ট্রিংয়ে নির্দিষ্ট প্যাটার্ন অনুসন্ধান, যাচাই, এবং পরিবর্তন করতে ব্যবহার করা হয়।
RegEx সিম্বলস (Symbols)
.: যেকোনো একক চরিত্র^: স্ট্রিংয়ের শুরু$: স্ট্রিংয়ের শেষ*: পূর্ববর্তী চরিত্র শূন্য বা তার বেশি বার পুনরাবৃত্তি হতে পারে+: পূর্ববর্তী চরিত্র একবার বা তার বেশি বার পুনরাবৃত্তি হতে পারে?: পূর্ববর্তী চরিত্র শূন্য বা একবার থাকতে পারে[]: একটি সেট বা ক্লাস (যেমন,[a-z]সব ছোট অক্ষর)|: OR অপারেটর (যেমন,a|bমানে 'a' অথবা 'b')(): গ্রুপিং, প্যাটার্নের অংশ হিসাবে
বেসিক RegEx প্যাটার্ন উদাহরণ
a.: যেকোনো 'a' চরিত্রের পর যে কোনো একক চরিত্র।^abc: 'abc' দিয়ে শুরু হওয়া যে কোনো স্ট্রিং।abc$: 'abc' দিয়ে শেষ হওয়া যে কোনো স্ট্রিং।\d: যে কোনো ডিজিট (0-9)।[a-z]: এক ছোট হাতের অক্ষর।[A-Za-z]: একটি অক্ষর (ছোট বা বড়)।\w: অক্ষর, সংখ্যা অথবা আন্ডারস্কোর (_), অর্থাৎ একটি শব্দের অংশ।
জুলিয়াতে Regular Expressions ব্যবহার করা
জুলিয়া প্রোগ্রামিং ভাষায় Regular Expressions এর জন্য Regex টাইপ ব্যবহার করা হয়। স্ট্রিং ম্যানিপুলেশন ও মেলানোর জন্য জুলিয়া ismatch(), match(), replace() এবং split() ফাংশন সরবরাহ করে।
১. String Matching with Regular Expressions
ismatch() ফাংশন
ismatch() ফাংশনটি একটি স্ট্রিংয়ের সাথে নির্দিষ্ট RegEx প্যাটার্ন মেলানোর জন্য ব্যবহার করা হয়। এটি যদি প্যাটার্নটি স্ট্রিংয়ে খুঁজে পায়, তাহলে true ফেরত দেয়, নাহলে false।
pattern = r"^Hello"
str = "Hello, World!"
println(ismatch(pattern, str)) # আউটপুট: trueএখানে, ^Hello প্যাটার্নটি স্ট্রিংয়ের শুরুতে "Hello" মেলানোর জন্য ব্যবহার করা হয়েছে, এবং ismatch() ফাংশনটি true ফেরত দিচ্ছে কারণ স্ট্রিংটি "Hello" দিয়ে শুরু হয়।
match() ফাংশন
match() ফাংশনটি যদি একটি প্যাটার্ন স্ট্রিংয়ে পাওয়া যায়, তবে এটি পুরো মেলে এমন স্ট্রিং এবং তাদের অবস্থান ফেরত দেয়।
pattern = r"World"
str = "Hello, World!"
result = match(pattern, str)
println(result.match) # আউটপুট: Worldএখানে, match() ফাংশনটি "World" প্যাটার্নের সাথে মেলে এমন অংশটি ফেরত দিচ্ছে, অর্থাৎ "World"।
২. String Replacement with Regular Expressions
replace() ফাংশন
replace() ফাংশনটি স্ট্রিংয়ের মধ্যে RegEx প্যাটার্নের সাথে মেলানো অংশগুলি প্রতিস্থাপন করতে ব্যবহৃত হয়। এটি একটি নতুন স্ট্রিং ফেরত দেয়।
str = "I have 2 apples"
pattern = r"\d+" # ডিগিটের সাথে মেলানো প্যাটার্ন
replacement = "many"
new_str = replace(str, pattern => replacement)
println(new_str) # আউটপুট: I have many applesএখানে, \d+ প্যাটার্নটি ডিগিটের সাথে মেলে এবং replace() ফাংশনটি সেই ডিগিটের জায়গায় "many" রাখে।
৩. String Splitting with Regular Expressions
split() ফাংশন
split() ফাংশনটি একটি স্ট্রিংকে নির্দিষ্ট RegEx প্যাটার্নের ভিত্তিতে বিভক্ত (split) করতে ব্যবহৃত হয়।
str = "apple,banana,orange"
pattern = r","
result = split(str, pattern)
println(result) # আউটপুট: ["apple", "banana", "orange"]এখানে, split() ফাংশনটি কমা , চিহ্নের ভিত্তিতে স্ট্রিংটিকে পৃথক করে একটি অ্যারে প্রদান করে।
৪. Case Insensitive Matching
RegEx প্যাটার্নে case-insensitive matching করতে i ফ্ল্যাগ ব্যবহার করা যেতে পারে।
pattern = r"hello"i # 'hello' এর প্রতি ক্ষেত্রে মেলাবে
str = "Hello, World!"
println(ismatch(pattern, str)) # আউটপুট: trueএখানে, i ফ্ল্যাগটি প্যাটার্নটিকে case-insensitive করে তোলে, যার ফলে "Hello" এবং "hello" এর মধ্যে পার্থক্য করা হয় না।
সারসংক্ষেপ
- Regular Expressions (RegEx) জুলিয়া ভাষায় স্ট্রিং ম্যানিপুলেশন এবং মেলানোর জন্য একটি শক্তিশালী টুল।
ismatch()ফাংশন স্ট্রিংয়ের সাথে প্যাটার্ন মেলানো চেক করতে ব্যবহৃত হয়।match()ফাংশন প্যাটার্নের সাথে মেলানো অংশ এবং তাদের অবস্থান ফেরত দেয়।replace()ফাংশন স্ট্রিংয়ের মধ্যে প্যাটার্ন মেলে এমন অংশগুলি প্রতিস্থাপন করতে ব্যবহৃত হয়।split()ফাংশন একটি স্ট্রিংকে RegEx প্যাটার্নের ভিত্তিতে বিভক্ত করতে ব্যবহৃত হয়।iফ্ল্যাগ case-insensitive matching জন্য ব্যবহার করা হয়।
RegEx জুলিয়া ভাষায় স্ট্রিং ম্যানিপুলেশন এবং অনুসন্ধান করার জন্য একটি অত্যন্ত শক্তিশালী টুল, যা কোডের নমনীয়তা এবং কার্যকারিতা বাড়ায়।
String এবং Byte Arrays হল দুটি বিভিন্ন ডেটা টাইপ যা জুলিয়া প্রোগ্রামিং ভাষায় টেক্সট বা ডেটা সংরক্ষণ এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। যদিও উভয়ের মধ্যে কিছু মিল আছে, তবে তাদের ব্যবহারের ক্ষেত্রে এবং কার্যকারিতায় কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।
String (স্ট্রিং)
String হলো একটি শব্দ বা টেক্সট সংরক্ষণের জন্য ব্যবহৃত ডেটা টাইপ। এটি সাধারণত UTF-8 এনকোডিং ব্যবহার করে টেক্সট বা চরিত্র (character) ধারন করে।
String-এর বৈশিষ্ট্য:
- তথ্য সংরক্ষণ: স্ট্রিং মূলত অক্ষর (characters) ধারন করে, যেমন একটি নাম, শব্দ, বা বাক্য।
- ইনপুট এবং আউটপুট: এটি সাধারণত ব্যবহারকারীর ইনপুট বা আউটপুট এবং টেক্সট প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
- এনকোডিং: স্ট্রিংটি UTF-8 এনকোডিংয়ে স্টোর করা হয়, যা অন্যান্য ভাষার অক্ষর বা স্পেশাল চিহ্নের সাপোর্টও প্রদান করে।
স্ট্রিং তৈরি করা:
s = "Hello, World!" # স্ট্রিং ডিফাইনেশন
println(s) # আউটপুট: Hello, World!স্ট্রিং একটি immutable ডেটা টাইপ, অর্থাৎ একবার তৈরি হলে এর মধ্যে পরিবর্তন করা যায় না।
Byte Array (বাইট অ্যারে)
Byte Array হলো এমন একটি ডেটা স্ট্রাকচার যা বাইটস (bytes) বা ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। এটি একটি অ্যারে যা শুধুমাত্র সংখ্যাসূচক (0 থেকে 255) মান ধারণ করতে পারে, যেখানে প্রতিটি উপাদান এক একটি বাইট প্রতিনিধিত্ব করে।
Byte Array-এর বৈশিষ্ট্য:
- তথ্য সংরক্ষণ: এটি বাইট আকারে তথ্য সংরক্ষণ করে এবং সাধারণত বাইনারি ডেটা বা কাঁচা ডেটা সঞ্চয় করতে ব্যবহৃত হয়।
- ফাইল এবং নেটওয়ার্ক ডেটা: বাইট অ্যারে ফাইল, নেটওয়ার্ক প্যাকেট, ইমেজ, অডিও বা ভিডিও ডেটার জন্য উপযোগী, যেখানে টেক্সট নয়, কাঁচা বাইনারি ডেটা প্রয়োজন।
- মিউটেবল: বাইট অ্যারে সাধারণত mutable, অর্থাৎ এটি পরিবর্তনযোগ্য।
Byte Array তৈরি করা:
b = UInt8[72, 101, 108, 108, 111] # 'Hello' শব্দের বাইনারি মান
println(b) # আউটপুট: [72, 101, 108, 108, 111]এখানে, প্রতিটি সংখ্যার মান একটি বাইটের প্রতিনিধিত্ব করে। 72, 101, 108, 108, 111 হল ASCII কোডের মান যা 'H', 'e', 'l', 'l', 'o' এর জন্য।
String এবং Byte Arrays এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | String | Byte Array |
|---|---|---|
| তথ্য | স্ট্রিং অক্ষর বা টেক্সট (characters/text) | বাইনারি ডেটা বা বাইট (binary data/bytes) |
| এনকোডিং | UTF-8 এনকোডিং (বিশ্বব্যাপী ভাষার জন্য উপযুক্ত) | কোনো নির্দিষ্ট এনকোডিং নয়, কাঁচা বাইট ডেটা |
| mutable বা immutable | Immutable (পরিবর্তনযোগ্য নয়) | Mutable (পরিবর্তনযোগ্য) |
| ব্যবহার | টেক্সট প্রক্রিয়াকরণ, ইনপুট এবং আউটপুট | কাঁচা ডেটা সঞ্চয়, নেটওয়ার্ক প্যাকেট, ফাইল |
| ডেটা স্টোরেজ | অক্ষর (characters) | বাইট (bytes) |
| উদাহরণ | "Hello, World!" | UInt8[72, 101, 108, 108, 111] |
| কোডিং ও ডিকোডিং | স্ট্রিংয়ের মধ্যে টেক্সট পড়া এবং লেখা সহজ | বাইনারি ডেটার জন্য কোডিং এবং ডিকোডিং জটিল |
String এবং Byte Array এর ব্যবহার
- String ব্যবহার:
- যখন আপনি টেক্সট ডেটা নিয়ে কাজ করছেন, যেমন ব্যবহারকারীর ইনপুট, বাক্য তৈরি, বা ভাষাগত বিশ্লেষণ, তখন string ব্যবহার করবেন। এটি ব্যবহৃত হয় ফাইলের নাম, ইউজার মেসেজ, বা কোন লেখা প্রক্রিয়াকরণের ক্ষেত্রে।
- Byte Array ব্যবহার:
- যখন আপনি বাইনারি ডেটা নিয়ে কাজ করছেন, যেমন ইমেজ বা ফাইলের কাঁচা ডেটা, নেটওয়ার্ক প্যাকেট, অডিও বা ভিডিও ডেটা, তখন byte array ব্যবহার করবেন। এটি নেটওয়ার্কিং বা মিডিয়া ফাইল প্রক্রিয়াকরণের জন্য অত্যন্ত উপযোগী।
সারসংক্ষেপ
- String হল টেক্সট বা অক্ষর সংরক্ষণ করতে ব্যবহৃত ডেটা টাইপ, যা UTF-8 এনকোডিং ব্যবহার করে এবং এটি immutable।
- Byte Array হলো বাইটস বা কাঁচা ডেটা সংরক্ষণ করতে ব্যবহৃত ডেটা স্ট্রাকচার, যা mutable এবং কোনও নির্দিষ্ট এনকোডিং ছাড়া কাজ করে।
- String সাধারণত টেক্সট প্রক্রিয়াকরণে ব্যবহৃত হয়, আর Byte Arrays কাঁচা ডেটা বা বাইনারি ফাইলের জন্য উপযোগী।
Read more