Rexx একটি অত্যন্ত শক্তিশালী ভাষা যা টেক্সট (স্ট্রিং) ম্যানিপুলেশনের জন্য বিভিন্ন ফাংশন এবং কমান্ড প্রদান করে। স্ট্রিং ম্যানিপুলেশন বিভিন্ন ধরনের টেক্সট ডেটার সাথে কাজ করার জন্য অপরিহার্য, যেমন টেক্সট সংযোজন, টেক্সট থেকে অংশ বের করা, এবং স্ট্রিংয়ের দৈর্ঘ্য নির্ণয় করা ইত্যাদি। Rexx-এর মধ্যে স্ট্রিং ম্যানিপুলেশন করার জন্য কয়েকটি সাধারণ ফাংশন এবং টুলস রয়েছে।
১. স্ট্রিংয়ের দৈর্ঘ্য নির্ণয় করা (Finding String Length)
স্ট্রিংয়ের দৈর্ঘ্য বের করার জন্য LENGTH ফাংশন ব্যবহার করা হয়। এটি স্ট্রিংয়ের মধ্যে থাকা অক্ষরের সংখ্যা নির্ধারণ করে।
উদাহরণ:
str = "Hello, Rexx!"
length = LENGTH(str)
say "String length: " length /* আউটপুট: 13 */এখানে LENGTH ফাংশন str স্ট্রিংয়ের দৈর্ঘ্য বের করে এবং সেটি প্রদর্শন করে।
২. স্ট্রিংয়ের অংশ বের করা (Extracting Substring)
স্ট্রিংয়ের নির্দিষ্ট অংশ বের করার জন্য SUBSTR ফাংশন ব্যবহার করা হয়। আপনি একটি স্ট্রিং থেকে নির্দিষ্ট অবস্থান থেকে শুরু করে একটি সাবস্ট্রিং বের করতে পারেন।
উদাহরণ:
str = "Hello, Rexx!"
sub_str = SUBSTR(str, 8, 4) /* 8 নম্বর পজিশন থেকে 4টি অক্ষর বের করা */
say sub_str /* আউটপুট: Rexx */এখানে, SUBSTR ফাংশন ৮ নাম্বার পজিশন থেকে ৪টি অক্ষর বের করে এবং "Rexx" প্রদর্শন করে।
৩. স্ট্রিংয়ের অংশের অবস্থান খুঁজে পাওয়া (Finding Position of Substring)
স্ট্রিংয়ের মধ্যে একটি সাবস্ট্রিংয়ের অবস্থান খুঁজে পেতে POS ফাংশন ব্যবহার করা হয়। এটি সাবস্ট্রিংটি প্রথম কোথায় উপস্থিত তা জানায়।
উদাহরণ:
str = "Hello, Rexx!"
position = POS("Rexx", str)
say "Position of 'Rexx': " position /* আউটপুট: 8 */এখানে, POS ফাংশন "Rexx" সাবস্ট্রিংটির প্রথম উপস্থিতির অবস্থান (৮) নির্ধারণ করে।
৪. স্ট্রিং যোগ করা (Concatenating Strings)
স্ট্রিংয়ের দুটি বা বেশি অংশ যোগ করতে সরাসরি || অপারেটর ব্যবহার করা হয়। এটি স্ট্রিংকে একত্রিত (concatenate) করে একটি নতুন স্ট্রিং তৈরি করে।
উদাহরণ:
str1 = "Hello, "
str2 = "Rexx!"
combined_str = str1 || str2
say combined_str /* আউটপুট: Hello, Rexx! */এখানে, || অপারেটর দুটি স্ট্রিংকে একত্রিত করে একটি নতুন স্ট্রিং তৈরি করেছে।
৫. স্ট্রিংয়ের অংশ প্রতিস্থাপন (Replacing Part of a String)
স্ট্রিংয়ের অংশ প্রতিস্থাপন করতে TRANSLATE এবং SUBST ফাংশন ব্যবহার করা হয়। এগুলি স্ট্রিংয়ের নির্দিষ্ট অংশ বদলাতে সাহায্য করে।
উদাহরণ:
str = "Hello, Rexx!"
new_str = TRANSLATE(str, "XYZ", "Rexx")
say new_str /* আউটপুট: Hello, XYZ! */এখানে, TRANSLATE ফাংশন "Rexx" কে "XYZ" দিয়ে প্রতিস্থাপন করেছে।
আরেকটি উদাহরণ SUBST ফাংশনের:
str = "Hello, Rexx!"
new_str = SUBST(str, 8, 4, "World") /* 8 নম্বর পজিশন থেকে 4 অক্ষরকে "World" দিয়ে প্রতিস্থাপন */
say new_str /* আউটপুট: Hello, World! */এখানে, SUBST ফাংশন স্ট্রিংয়ের নির্দিষ্ট অংশ "Rexx" কে "World" দিয়ে প্রতিস্থাপন করেছে।
৬. স্ট্রিংয়ের শুরু এবং শেষ থেকে স্পেস মুছে ফেলা (Trimming Spaces)
স্ট্রিংয়ের শুরু এবং শেষ থেকে স্পেস মুছে ফেলতে STRIP ফাংশন ব্যবহার করা হয়।
উদাহরণ:
str = " Hello, Rexx! "
trimmed_str = STRIP(str)
say trimmed_str /* আউটপুট: Hello, Rexx! */এখানে, STRIP ফাংশন স্ট্রিংয়ের শুরু এবং শেষে থাকা অতিরিক্ত স্পেস মুছে দিয়েছে।
৭. স্ট্রিং থেকে শব্দ বের করা (Extracting Words from String)
Rexx-এ WORDS ফাংশন ব্যবহার করে একটি স্ট্রিং থেকে আলাদা আলাদা শব্দ বের করা যায়। এই ফাংশন স্ট্রিংয়ের মধ্যে থাকা শব্দের সংখ্যা বের করে এবং নির্দিষ্ট শব্দ অ্যাক্সেস করা যায়।
উদাহরণ:
str = "Rexx is a powerful language"
word_count = WORDS(str)
word1 = WORD(str, 1)
word2 = WORD(str, 2)
say "Total words: " word_count /* আউটপুট: 5 */
say "First word: " word1 /* আউটপুট: Rexx */
say "Second word: " word2 /* আউটপুট: is */এখানে, WORDS ফাংশন স্ট্রিংয়ের মধ্যে শব্দ গুনে এবং WORD ফাংশন দিয়ে নির্দিষ্ট শব্দ বের করে।
৮. স্ট্রিংয়ের ক্যাপিটালাইজেশন (Changing Case of String)
Rexx-এ স্ট্রিংয়ের কেস পরিবর্তন করতে UPPER এবং LOWER ফাংশন ব্যবহার করা হয়।
উদাহরণ:
str = "Hello, Rexx!"
upper_str = UPPER(str)
lower_str = LOWER(str)
say upper_str /* আউটপুট: HELLO, REXX! */
say lower_str /* আউটপুট: hello, rexx! */এখানে, UPPER ফাংশন স্ট্রিংকে বড় হাতের অক্ষরে এবং LOWER ফাংশন ছোট হাতের অক্ষরে রূপান্তরিত করেছে।
সারাংশ:
Rexx-এ স্ট্রিং ম্যানিপুলেশন অত্যন্ত শক্তিশালী এবং বহুমুখী। আপনি স্ট্রিংয়ের দৈর্ঘ্য নির্ণয়, অংশ বের করা, স্ট্রিং যোগ করা, অংশ প্রতিস্থাপন, শব্দ বের করা, স্পেস মুছে ফেলা, এবং কেস পরিবর্তনসহ বিভিন্ন ধরনের টেক্সট ম্যানিপুলেশন করতে পারেন। Rexx-এর সহজ সিনট্যাক্স এবং স্ট্রিং ম্যানিপুলেশন ফাংশনগুলি প্রোগ্রামিংকে আরও সহজ এবং দ্রুত করে তোলে।
Rexx ভাষায় স্ট্রিং হ্যান্ডলিং খুবই সহজ এবং শক্তিশালী। এতে বিভিন্ন ফাংশন রয়েছে যেগুলি স্ট্রিং ম্যানিপুলেশন এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। নিচে কিছু সাধারণ স্ট্রিং হ্যান্ডলিং ফাংশন সম্পর্কে আলোচনা করা হলো, যেমন substr, length, word, এবং pos।
1. substr (Substring)
substr ফাংশন ব্যবহার করে একটি স্ট্রিং থেকে নির্দিষ্ট অংশ বা সাবস্ট্রিং বের করা হয়। এটি স্ট্রিংয়ের একটি নির্দিষ্ট অংশ ফেরত দেয়, যা ইন্ডেক্সের ভিত্তিতে নির্ধারিত হয়।
সিনট্যাক্স:
substr(string, start, length)- string: এটি সেই স্ট্রিং যার অংশ বের করতে হবে।
- start: এটি ইনডেক্স (১-ভিত্তিক) থেকে শুরু হওয়া অবস্থান।
- length (optional): এটি কতটা দৈর্ঘ্য পর্যন্ত সাবস্ট্রিং নিতে হবে তা নির্ধারণ করে।
উদাহরণ:
string = "Hello, World!"
sub_str = substr(string, 1, 5) /* "Hello" হবে */এখানে, স্ট্রিংয়ের প্রথম ৫টি অক্ষর "Hello" সাবস্ট্রিং হিসেবে বের করা হবে।
অপশনাল Length:
sub_str = substr(string, 8) /* "World!" হবে */এখানে শুধুমাত্র ৮তম চরিত্র থেকে শুরু করে বাকী অংশ substr ফেরত দেবে।
2. length (Length)
length ফাংশন একটি স্ট্রিংয়ের দৈর্ঘ্য বা তার মধ্যে কতটি চরিত্র আছে তা নির্ধারণ করতে ব্যবহৃত হয়।
সিনট্যাক্স:
length(string)- string: স্ট্রিংয়ের দৈর্ঘ্য জানার জন্য স্ট্রিংটি।
উদাহরণ:
string = "Hello"
len = length(string) /* 5 হবে */এখানে স্ট্রিং "Hello" এর দৈর্ঘ্য ৫ হবে, কারণ এতে ৫টি চরিত্র আছে।
3. word (Word)
word ফাংশন একটি স্ট্রিং থেকে নির্দিষ্ট পদের মান (word) বের করার জন্য ব্যবহৃত হয়। এটি একটি স্পেস বা ডেলিমিটার দ্বারা আলাদা করা শব্দ (word) ফেরত দেয়।
সিনট্যাক্স:
word(string, position)- string: স্ট্রিং যা থেকে শব্দটি বের করতে হবে।
- position: শব্দটির অবস্থান, যেখানে ১ম শব্দ প্রথমে এবং পরবর্তী শব্দগুলো তার পরের অবস্থানে থাকবে।
উদাহরণ:
string = "Rexx is a powerful language"
first_word = word(string, 1) /* "Rexx" হবে */
second_word = word(string, 2) /* "is" হবে */এখানে, "Rexx" প্রথম শব্দ, এবং "is" দ্বিতীয় শব্দ হিসেবে আলাদা করা হবে।
4. pos (Position)
pos ফাংশন একটি নির্দিষ্ট সাবস্ট্রিংয়ের অবস্থান নির্ধারণ করতে ব্যবহৃত হয়। এটি একটি স্ট্রিংয়ের মধ্যে অন্য একটি স্ট্রিং এর প্রথম অবস্থান (পজিশন) ফেরত দেয়।
সিনট্যাক্স:
pos(substring, string)- substring: এটি সেই অংশ যা স্ট্রিংয়ের মধ্যে খোঁজা হবে।
- string: এটি সেই স্ট্রিং যার মধ্যে সাবস্ট্রিংটি খুঁজতে হবে।
উদাহরণ:
string = "Hello, World!"
position = pos("World", string) /* 8 হবে */এখানে, "World" স্ট্রিংটি "Hello, World!"-এর ৮ম পজিশনে রয়েছে, তাই pos ফাংশন ৮ ফেরত দেবে।
সারাংশ:
Rexx ভাষায় স্ট্রিং হ্যান্ডলিং ফাংশনগুলি স্ট্রিংয়ের বিভিন্ন অংশ বের করা, তার দৈর্ঘ্য জানা, শব্দ আলাদা করা এবং সাবস্ট্রিংয়ের অবস্থান নির্ধারণ করতে ব্যবহৃত হয়। এগুলি স্ক্রিপ্টিংয়ের সময় খুবই উপকারী এবং টেক্সট প্রসেসিংয়ের জন্য গুরুত্বপূর্ণ ফিচার:
substr: স্ট্রিংয়ের নির্দিষ্ট অংশ বের করা।length: স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করা।word: স্ট্রিং থেকে নির্দিষ্ট শব্দ বের করা।pos: স্ট্রিংয়ের মধ্যে সাবস্ট্রিংয়ের অবস্থান খুঁজে বের করা।
এগুলো স্ট্রিং প্রসেসিং এবং টেক্সট ম্যানিপুলেশন কাজকে আরও সহজ এবং কার্যকর করে তোলে।
Rexx ভাষায় স্ট্রিং ম্যানিপুলেশন সহজ এবং শক্তিশালী। এর মধ্যে দুটি গুরুত্বপূর্ণ অপারেশন হলো String Concatenation (স্ট্রিং সংযোগ) এবং Case Conversion (কেস কনভার্সন)। এগুলি প্রোগ্রামিংয়ের সময় স্ট্রিং নিয়ে কাজ করার জন্য অত্যন্ত গুরুত্বপূর্ণ। নিচে এই দুটি অপারেশন কীভাবে Rexx-এ কাজ করে তা বিস্তারিত আলোচনা করা হলো।
১. String Concatenation (স্ট্রিং সংযোগ)
স্ট্রিং সংযোগ (Concatenation) হলো দুটি বা তার বেশি স্ট্রিংকে একত্রিত করে একটি নতুন স্ট্রিং তৈরি করা। Rexx-এ স্ট্রিং কনক্যাটেনেশনের জন্য দুটি স্ট্রিংয়ের মধ্যে || অপারেটর ব্যবহার করা হয়।
String Concatenation using || operator:
সিনট্যাক্স:
result = string1 || string2- ব্যাখ্যা:
string1এবংstring2দুটি স্ট্রিংকে একত্রিত করা হয় এবং তাদের একত্রিত মানresultভেরিয়েবলে সংরক্ষণ করা হয়।
উদাহরণ:
greeting = "Hello, "
name = "Rexx!"
message = greeting || name
say message /* আউটপুট হবে: Hello, Rexx! */এখানে, "Hello, " এবং "Rexx!" দুটি স্ট্রিংকে একত্রিত করা হয়েছে এবং message-এ সেই একত্রিত মান রাখা হয়েছে।
২. String Concatenation with Multiple Strings (একাধিক স্ট্রিং কনক্যাটেনেশন)
Rexx-এ একাধিক স্ট্রিংকে একসাথে সংযুক্ত করা সহজ। আপনি একাধিক স্ট্রিং || অপারেটর দিয়ে একত্রিত করতে পারেন।
উদাহরণ:
part1 = "Rexx"
part2 = " is"
part3 = " powerful!"
sentence = part1 || part2 || part3
say sentence /* আউটপুট হবে: Rexx is powerful! */এখানে তিনটি স্ট্রিং একত্রিত করা হয়েছে এবং sentence ভেরিয়েবলে সেই একত্রিত স্ট্রিংটি রাখা হয়েছে।
৩. Case Conversion (কেস কনভার্সন)
Rexx-এ স্ট্রিংয়ের কেস কনভার্ট করতে upcase() এবং lowcase() ফাংশন ব্যবহার করা হয়। এগুলি স্ট্রিংয়ের সব অক্ষরকে যথাক্রমে বড় হাতের অক্ষরে (uppercase) অথবা ছোট হাতের অক্ষরে (lowercase) রূপান্তরিত করে।
upcase() Function (বড় হাতের অক্ষরে রূপান্তর):
upcase() ফাংশনটি একটি স্ট্রিংয়ের সব অক্ষরকে বড় হাতের অক্ষরে (uppercase) রূপান্তর করে।
সিনট্যাক্স:
result = upcase(string)
lowcase() Function (ছোট হাতের অক্ষরে রূপান্তর):
lowcase() ফাংশনটি একটি স্ট্রিংয়ের সব অক্ষরকে ছোট হাতের অক্ষরে (lowercase) রূপান্তর করে।
সিনট্যাক্স:
result = lowcase(string)
উদাহরণ:
text = "Hello, Rexx!"
upperText = upcase(text)
lowerText = lowcase(text)
say upperText /* আউটপুট হবে: HELLO, REXX! */
say lowerText /* আউটপুট হবে: hello, rexx! */এখানে, upcase() ফাংশনটি text স্ট্রিংয়ের সমস্ত অক্ষরকে বড় হাতের অক্ষরে রূপান্তরিত করেছে, এবং lowcase() ফাংশনটি সমস্ত অক্ষরকে ছোট হাতের অক্ষরে রূপান্তরিত করেছে।
৪. Mixed Case to Specific Case Conversion
আপনি যদি একটি স্ট্রিংকে শুধু প্রথম অক্ষর বড় করতে চান, এবং বাকি অক্ষর ছোট রাখতে চান (Title Case), তাহলে Rexx-এ এই কাজটি করা যেতে পারে:
Title Case Conversion:
text = "hello, rexX!"
titleText = upcase(substr(text, 1, 1)) || lowcase(substr(text, 2))
say titleText /* আউটপুট হবে: Hello, rexx! */এখানে, প্রথম অক্ষর upcase() দিয়ে বড় করা হয়েছে এবং বাকী অংশ lowcase() দিয়ে ছোট রাখা হয়েছে।
সারাংশ:
- String Concatenation: Rexx-এ স্ট্রিং সংযোগ করার জন্য
||অপারেটর ব্যবহার করা হয়। এটি দুটি বা একাধিক স্ট্রিংকে একত্রিত করে একটি নতুন স্ট্রিং তৈরি করে। - Case Conversion: Rexx-এ স্ট্রিংয়ের কেস কনভার্ট করতে
upcase()এবংlowcase()ফাংশন ব্যবহার করা হয়।upcase()স্ট্রিংয়ের সব অক্ষরকে বড় হাতের অক্ষরে রূপান্তর করে, এবংlowcase()সব অক্ষরকে ছোট হাতের অক্ষরে রূপান্তর করে।
এই কৌশলগুলি ব্যবহার করে Rexx-এ স্ট্রিং ম্যানিপুলেশন সহজ এবং কার্যকরীভাবে করা যেতে পারে।
Rexx একটি অত্যন্ত শক্তিশালী ভাষা যা স্ট্রিং ম্যানিপুলেশন এবং প্যাটার্ন ম্যাচিংয়ের জন্য বেশ কার্যকর। Rexx এ প্যাটার্ন ম্যাচিং এবং রেগুলার এক্সপ্রেশন (Regular Expressions) ব্যবহার করে জটিল স্ট্রিং বা ডেটা খোঁজা এবং ম্যানিপুলেট করা যায়। নিচে Rexx এ Pattern Matching এবং Regular Expressions ব্যবহার করার পদ্ধতি নিয়ে বিস্তারিত আলোচনা করা হল।
1. Pattern Matching (প্যাটার্ন ম্যাচিং)
Pattern Matching হল একটি পদ্ধতি যার মাধ্যমে আমরা একটি নির্দিষ্ট প্যাটার্ন বা স্ট্রিংকে আরেকটি স্ট্রিংয়ের মধ্যে খুঁজে বের করি। Rexx এ এটি খুবই সহজ, এবং সাধারণত match বা index ফাংশন ব্যবহার করা হয়। এছাড়া, parse কমান্ডও প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়।
match ফাংশন:
match ফাংশনটি একটি প্যাটার্নের সাথে মেলানো অংশ খুঁজে বের করে এবং এটি ম্যাচের পজিশন রিটার্ন করে। যদি কোন মেলানো অংশ না পাওয়া যায়, তবে এটি ০ রিটার্ন করে।
উদাহরণ:
pattern = "apple"
text = "I have an apple and an orange."
position = match(pattern, text)
if position > 0 then
say "Pattern found at position" position
else
say "Pattern not found."এই কোডে, "apple" প্যাটার্নটি "I have an apple and an orange." স্ট্রিংয়ের মধ্যে খুঁজে বের করা হচ্ছে। যদি এটি পাওয়া যায়, তবে মেলানো অংশের পজিশন প্রিন্ট করা হবে।
index ফাংশন:
index ফাংশনটি একটি স্ট্রিংয়ে সাবস্ট্রিং বা প্যাটার্ন খুঁজে বের করে এবং তার পজিশন রিটার্ন করে।
উদাহরণ:
text = "I love programming with Rexx."
position = index(text, "programming")
if position > 0 then
say "Found 'programming' at position" position
else
say "'programming' not found."এই কোডে, "programming" শব্দটি "I love programming with Rexx." স্ট্রিংয়ের মধ্যে খুঁজে বের করা হচ্ছে।
parse ফাংশন:
parse একটি শক্তিশালী টুল যা স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়। এটি খুবই উপকারী যখন আপনি স্ট্রিংয়ের কিছু অংশ আলাদা করতে চান।
উদাহরণ:
text = "Name: John, Age: 30"
parse var text "Name:" name ", Age:" age
say "Name: " name
say "Age: " ageএখানে, parse কমান্ডটি Name: এবং Age: এর পরের অংশ আলাদা করে বের করবে।
2. Regular Expressions (রেগুলার এক্সপ্রেশন)
Rexx-এ রেগুলার এক্সপ্রেশন (regex) ব্যবহার করা সম্ভব, যা স্ট্রিং ম্যানিপুলেশনের জন্য আরও শক্তিশালী এবং নমনীয় পদ্ধতি প্রদান করে। রেগুলার এক্সপ্রেশন দিয়ে আপনি আরও জটিল প্যাটার্ন খুঁজে বের করতে পারবেন, যেমন ইমেইল, ফোন নাম্বার, ওয়েব ইউআরএল ইত্যাদি।
regex ফাংশন:
Rexx-এ রেগুলার এক্সপ্রেশন ব্যবহারের জন্য regex ফাংশনটি ব্যবহার করা হয়। এটি একটি স্ট্রিংয়ের মধ্যে রেগুলার এক্সপ্রেশন প্যাটার্ন মেলে কিনা তা পরীক্ষা করে। Rexx-এ রেগুলার এক্সপ্রেশন ব্যবহারের জন্য আপনাকে regex ফাংশনটি ব্যবহার করতে হবে।
উদাহরণ:
text = "My email is example@example.com"
pattern = "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})" /* Email regex pattern */
if regex(pattern, text) then
say "Email found!"
else
say "No email found."এখানে, একটি ইমেইল প্যাটার্ন ব্যবহার করে Rexx চেক করছে যে স্ট্রিংটি একটি বৈধ ইমেইল ঠিকানা ধারণ করে কি না।
রেগুলার এক্সপ্রেশন প্যাটার্নের উদাহরণ:
^: প্যাটার্ন শুরুতে অবস্থান। যেমন,^abcমানে স্ট্রিংয়ের শুরুতেabcথাকতে হবে।$: প্যাটার্ন শেষে অবস্থান। যেমন,abc$মানে স্ট্রিংয়ের শেষের দিকেabcথাকতে হবে।.: যেকোনো একক অক্ষর। যেমন,a.bমানেaএবংbএর মধ্যে যেকোনো একক অক্ষর থাকতে হবে।*: পূর্ববর্তী প্যাটার্নের শূন্য বা আরও বেশি ইনস্ট্যান্স। যেমন,a*bমানেaএর পর শূন্য বা আরও বেশিaথাকতে পারে এবং তারপরbথাকতে হবে।+: পূর্ববর্তী প্যাটার্নের এক বা তার বেশি ইনস্ট্যান্স। যেমন,a+bমানে এক বা তার বেশিaএবং তার পরbথাকবে।[]: নির্দিষ্ট অক্ষরের সেট। যেমন,[aeiou]মানে যেকোনো ভোকাল শব্দ।(): গ্রুপিং। যেমন,(abc|def)মানেabcবাdef।
3. Pattern Matching এবং Regex এর পার্থক্য
- Pattern Matching:
- সাধারণত একটি নির্দিষ্ট স্ট্রিং বা সাবস্ট্রিং খুঁজে বের করতে ব্যবহৃত হয়।
- Rexx এর
match,index, এবংparseফাংশনগুলো সহজ প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়। - সাধারণ স্ট্রিং মিলানো এবং সিম্পল প্যাটার্ন খোঁজা।
- Regular Expressions:
- আরও শক্তিশালী এবং নমনীয় প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়।
- এটি আরও জটিল এবং পরিমিত প্যাটার্ন খুঁজে বের করতে সক্ষম (যেমন, ইমেইল, ফোন নম্বর, ওয়েব ঠিকানা ইত্যাদি)।
regexফাংশন ব্যবহার করে জটিল প্যাটার্ন এবং মাল্টি-লাইন বা বিশেষ প্যাটার্ন খোঁজা যায়।
সারাংশ:
- Pattern Matching Rexx-এ সরল প্যাটার্ন মেলানোর জন্য ব্যবহৃত হয় এবং
match,index, এবংparseফাংশন দ্বারা এটি সম্পন্ন করা যায়। - Regular Expressions Rexx-এ শক্তিশালী প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়, যা অধিকতর জটিল এবং নমনীয় প্যাটার্ন খুঁজে বের করতে সক্ষম।
- Regex-এ রেগুলার এক্সপ্রেশন সিম্বল এবং কৌশল ব্যবহার করে আপনার স্ট্রিং ম্যানিপুলেশন কাজ আরও জটিল এবং দ্রুত করতে পারেন।
Rexx একটি বহুমুখী প্রোগ্রামিং ভাষা যা স্ট্রিং ম্যানিপুলেশন এবং জটিল স্ট্রিং প্রসেসিংয়ের জন্য শক্তিশালী ফিচার সরবরাহ করে। এটি বিভিন্ন ধরনের টেক্সট এক্সট্র্যাকশন, ট্রান্সফর্মেশন, প্যাটার্ন ম্যাচিং এবং এনকোডিং/ডিকোডিং কাজ করতে সক্ষম। নিচে Rexx-এ জটিল স্ট্রিং প্রসেসিংয়ের জন্য কিছু উন্নত টেকনিক আলোচনা করা হল।
1. Regular Expressions (রেগুলার এক্সপ্রেশন) দিয়ে প্যাটার্ন ম্যাচিং
Rexx-এ রেগুলার এক্সপ্রেশন (regex) ব্যবহার করা যায়, যা একটি শক্তিশালী টুল প্যাটার্ন ম্যাচিং এবং স্ট্রিং অনুসন্ধান করার জন্য। এটি স্ট্রিং ভ্যালিডেশন, সাবস্টিটিউশন এবং প্যাটার্ন এক্সট্র্যাকশন করতে সহায়তা করে।
উদাহরণ: রেগুলার এক্সপ্রেশন ব্যবহার করে নাম্বার বের করা
/* স্ট্রিং থেকে নাম্বার বের করতে রেগুলার এক্সপ্রেশন ব্যবহার */
string = "The price is 150 dollars, the discount is 30."
pattern = "\d+" /* এক বা একাধিক ডিজিট ম্যাচ করতে */
address rxsubcom "install rexxutil" /* RexxUtil লাইব্রেরি ইনস্টল করুন */
result = rxmatch(pattern, string) /* প্যাটার্ন ম্যাচ */
say result /* আউটপুট: 150 */এই উদাহরণে rxmatch() ফাংশন ব্যবহার করে স্ট্রিংয়ের মধ্যে প্রথম নাম্বার বের করা হচ্ছে। রেগুলার এক্সপ্রেশন \d+ ডিজিটের এক বা একাধিক সিকোয়েন্স ম্যাচ করে।
2. টোকেনাইজেশন: স্ট্রিং বিভাজন
টোকেনাইজেশন হল একটি পদ্ধতি যেখানে একটি স্ট্রিংকে ছোট ছোট উপাদানে বিভক্ত করা হয়। Rexx-এ parse কমান্ড ব্যবহার করে সহজেই স্ট্রিংটিকে ডেলিমিটার দিয়ে বিভক্ত করা যায়।
উদাহরণ: CSV লাইন টোকেনাইজ করা
/* একটি CSV লাইনের ইনডিভিজুয়াল কলামে টোকেনাইজেশন */
csvLine = "John,Doe,30,Engineer"
parse var csvLine name "," surname "," age "," occupation
say "Name: " name
say "Surname: " surname
say "Age: " age
say "Occupation: " occupationএখানে, parse var কমান্ড ব্যবহার করে একটি CSV লাইনকে কমা দিয়ে বিভক্ত করে আলাদা আলাদা ভ্যারিয়েবলে সংরক্ষণ করা হয়েছে।
3. স্ট্রিং ক্যানক্যাটেনেশন (একত্রিত করা)
স্ট্রিং ক্যানক্যাটেনেশন হল একাধিক স্ট্রিংকে একত্রিত করার প্রক্রিয়া। Rexx-এ || অপারেটর ব্যবহার করে স্ট্রিং সহজেই একত্রিত করা যায়।
উদাহরণ: একাধিক স্ট্রিং ক্যানক্যাটেনেশন
firstName = "John"
lastName = "Doe"
fullName = firstName || " " || lastName
say fullName /* আউটপুট: John Doe */এখানে, || ব্যবহার করে firstName এবং lastName এর মধ্যে একটি স্পেস যোগ করে একটি পূর্ণ নাম তৈরি করা হয়েছে।
4. সাবস্ট্রিং বের করা
Rexx-এ substr() ফাংশন ব্যবহার করে একটি স্ট্রিং থেকে সাবস্ট্রিং বের করা হয়, যা একটি নির্দিষ্ট পজিশন এবং দৈর্ঘ্য নির্ধারণ করে।
উদাহরণ: সাবস্ট্রিং বের করা
string = "Rexx Programming"
substring = substr(string, 1, 4) /* প্রথম 4 ক্যারেক্টার বের করা */
say substring /* আউটপুট: Rexx */এখানে, "Rexx Programming" স্ট্রিং থেকে প্রথম ৪টি ক্যারেক্টার বের করা হয়েছে।
5. স্ট্রিং রিপ্লেসমেন্ট TRANSLATE() ব্যবহার করে
Rexx-এ translate() ফাংশন ব্যবহার করে স্ট্রিংয়ের অক্ষর পরিবর্তন করা যায়, যা চরিত্র-by-চরিত্র রিপ্লেসমেন্ট করে।
উদাহরণ: স্ট্রিং রিপ্লেসমেন্ট
string = "Rexx Programming"
newString = translate(string, "XYZ", "Re")
say newString /* আউটপুট: Xxxx PXogramming */এখানে "R" এবং "e" অক্ষরগুলোকে যথাক্রমে "X" এবং "Y" দিয়ে রিপ্লেস করা হয়েছে।
6. স্ট্রিং অনুসন্ধান: সাবস্ট্রিং খুঁজে বের করা
Rexx-এ index() ফাংশন ব্যবহার করে একটি স্ট্রিংয়ের মধ্যে সাবস্ট্রিং খুঁজে বের করা হয়। এটি প্রথম যে অবস্থানে সাবস্ট্রিংটি পাওয়া যাবে, তার পজিশন রিটার্ন করে।
উদাহরণ: স্ট্রিং অনুসন্ধান
string = "Rexx is easy to learn"
position = index(string, "easy")
say position /* আউটপুট: 7 */এখানে, "easy" সাবস্ট্রিংটি "Rexx is easy to learn" স্ট্রিংয়ের মধ্যে অবস্থান নির্ধারণ করা হচ্ছে।
7. কেস কনভার্শন: আপার এবং লোয়ার কেস
Rexx-এ upper() এবং lower() ফাংশন ব্যবহার করে স্ট্রিংয়ের কেস পরিবর্তন করা যায়।
উদাহরণ: কেস কনভার্শন
string = "Hello, Rexx!"
upperString = upper(string)
lowerString = lower(string)
say upperString /* আউটপুট: HELLO, REXX! */
say lowerString /* আউটপুট: hello, rexx! */এখানে, upper() এবং lower() ফাংশন ব্যবহার করে "Hello, Rexx!" স্ট্রিংটিকে আপার এবং লোয়ার কেসে রূপান্তরিত করা হয়েছে।
8. স্ট্রিং প্যাডিং এবং ট্রিমিং
Rexx-এ left(), right(), এবং strip() ফাংশন ব্যবহার করে স্ট্রিং প্যাডিং এবং ট্রিমিং করা যায়। এগুলি ডেটা ফরম্যাটিংয়ের জন্য ব্যবহার করা হয়, বিশেষ করে যখন ডেটা এলাইন বা আউটপুট প্রস্তুত করা হয়।
উদাহরণ: স্ট্রিং প্যাডিং
string = "Rexx"
paddedString = left(string, 10) /* স্ট্রিংটি বাম পাশে 10 ক্যারেক্টারে প্যাড করা */
say paddedString /* আউটপুট: ' Rexx' */উদাহরণ: স্ট্রিং ট্রিমিং
string = " Hello, Rexx! "
trimmedString = strip(string) /* লিডিং এবং ট্রেইলিং স্পেস সরিয়ে ফেলুন */
say trimmedString /* আউটপুট: Hello, Rexx! */9. স্ট্রিং দৈর্ঘ্য এবং কাউন্ট
Rexx-এ length() ফাংশন ব্যবহার করে স্ট্রিংয়ের চরিত্র সংখ্যা নির্ণয় করা যায়।
উদাহরণ: স্ট্রিং দৈর্ঘ্য
string = "Rexx Programming"
lengthOfString = length(string)
say lengthOfString /* আউটপুট: 17 */এখানে, length() ফাংশন ব্যবহার করে "Rexx Programming" স্ট্রিংয়ের দৈর্ঘ্য নির্ণয় করা হয়েছে।
10. parse ব্যবহার করে জটিল স্ট্রিং প্রসেসিং
Rexx-এ parse কমান্ড ব্যবহার করে আরও জটিল স্ট্রিং প্রসেসিং করা যায়, যেমন একাধিক টোকেন একত্রিত করা, ডেলিমিটার দ্বারা স্ট্রিং প্রক্রিয়া করা এবং আরও অনেক কিছু।
উদাহরণ: একাধিক টোকেন প্যার্স করা
data = "Name:John, Age:30, Occupation:Engineer"
parse var data "Name:" name ", Age:" age ", Occupation:" occupation
say "Name: " name ", Age: " age ", Occupation: " occupationএখানে, parse var কমান্ড ব্যবহার করে data স্ট্রিংয়ের মধ্যে থেকে নাম, বয়স এবং পেশা আলাদা করা হয়েছে।
সারাংশ
Rexx একটি শক্তিশালী ভাষা যা স্ট্রিং প্রসেসিংয়ের জন্য অনেক উন্নত ফিচার প্রদান করে। কিছু গুরুত্বপূর্ণ স্ট্রিং প্রসেসিং টেকনিকের মধ্যে রয়েছে:
- Regular expressions: উন্নত প্যাটার্ন ম্যাচিং এবং ম্যানিপুলেশন।
- Tokenization: স্ট্রিং
কে ছোট ছোট উপাদানে বিভক্ত করা।
- String concatenation: একাধিক স্ট্রিংকে একত্রিত করা।
- Substring extraction: স্ট্রিংয়ের নির্দিষ্ট অংশ বের করা।
- Case conversion: স্ট্রিংয়ের কেস পরিবর্তন করা।
- String searching: স্ট্রিংয়ের মধ্যে সাবস্ট্রিং খুঁজে বের করা।
- String padding and trimming: ডেটা ফরম্যাটিং করা।
- Length calculation: স্ট্রিংয়ের দৈর্ঘ্য বের করা।
এই সব টেকনিক দিয়ে Rexx স্ট্রিং ম্যানিপুলেশন এবং টেক্সট প্রসেসিংয়ের ক্ষেত্রে আরও দক্ষ এবং নমনীয় হয়ে ওঠে।
Read more