String Handling (স্ট্রিং হ্যান্ডলিং)

টিসিএল/টিকে (Tcl/Tk) - Computer Programming

292

টিসিএল (Tcl) - স্ট্রিং হ্যান্ডলিং

টিসিএল (Tcl) একটি শক্তিশালী স্ক্রিপ্টিং ভাষা, যা স্ট্রিং প্রক্রিয়াকরণের জন্য বেশ কিছু ফিচার সরবরাহ করে। স্ট্রিং হ্যান্ডলিং টিসিএল-এর অন্যতম গুরুত্বপূর্ণ এবং বহুল ব্যবহৃত বৈশিষ্ট্য। টিসিএল স্ট্রিংগুলির সাথে কাজ করার জন্য বিভিন্ন বিল্ট-ইন কমান্ড এবং ফাংশন প্রদান করে, যা ডেটা প্রক্রিয়াকরণের জন্য খুবই উপকারী।

এখানে আমরা স্ট্রিং হ্যান্ডলিং সম্পর্কিত কিছু মূল ধারণা এবং টিসিএল-এর স্ট্রিং সম্পর্কিত বিভিন্ন ফাংশন সম্পর্কে বিস্তারিত আলোচনা করব।

১. স্ট্রিং ডিফাইন (String Definition)

টিসিএল-এ একটি স্ট্রিং ডিফাইন করার জন্য সাধারণত দুটি প্রকারের কোটেশন চিহ্ন ব্যবহার করা হয়: ডাবল কোটেশন (" ") এবং **সিঙ্গল কোটেশন (' ')**। তবে ডাবল কোটেশন ব্যবহার করা বেশি সাধারণ।

set name "Azizur"

এখানে, "Azizur" একটি স্ট্রিং, এবং এটি name ভেরিয়েবলে সংরক্ষিত রয়েছে।

২. স্ট্রিং লেন্থ (String Length)

টিসিএল-এ একটি স্ট্রিং-এর দৈর্ঘ্য বের করতে string length কমান্ড ব্যবহার করা হয়।

set message "Hello, World!"
set length [string length $message]
puts $length

এখানে, string length $message স্ট্রিংটির দৈর্ঘ্য বের করবে, এবং আউটপুট হবে 13 (যেহেতু "Hello, World!" এর মধ্যে ১৩টি চরিত্র রয়েছে)।

৩. স্ট্রিং কনকাটেনেশন (String Concatenation)

টিসিএল-এ দুটি বা তার অধিক স্ট্রিং একত্রিত করতে সরাসরি স্পেস ব্যবহার করা হয়।

set first_name "Azizur"
set last_name "Rahman"
set full_name "$first_name $last_name"
puts $full_name

এখানে, "Azizur" এবং "Rahman" দুটি স্ট্রিং একত্রিত হয়ে "Azizur Rahman" আউটপুট হবে।

৪. স্ট্রিং সাবস্ট্রিং (Substring Extraction)

টিসিএল-এ স্ট্রিং থেকে নির্দিষ্ট অংশ বের করার জন্য string range কমান্ড ব্যবহার করা হয়। এটি একটি স্ট্রিং-এর নির্দিষ্ট রেঞ্জ থেকে সাবস্ট্রিং বের করতে সাহায্য করে।

set message "Hello, World!"
set substring [string range $message 0 4]
puts $substring

এখানে, string range $message 0 4 স্ট্রিংয়ের প্রথম ৫টি চরিত্র (যা "Hello") বের করে দিবে। আউটপুট হবে "Hello"

৫. স্ট্রিং রিপ্লেসমেন্ট (String Replacement)

স্ট্রিংয়ের নির্দিষ্ট অংশ পরিবর্তন করতে string map অথবা string replace কমান্ড ব্যবহার করা হয়।

string map উদাহরণ:

set message "Hello, World!"
set new_message [string map {"World" "Tcl"} $message]
puts $new_message

এখানে, "World" শব্দটি "Tcl" দিয়ে প্রতিস্থাপন করা হবে, ফলে আউটপুট হবে "Hello, Tcl!"

string replace উদাহরণ:

set message "Hello, World!"
set new_message [string replace $message 7 11 "Tcl"]
puts $new_message

এখানে, string replace $message 7 11 "Tcl" কমান্ডটি "World" কে "Tcl" দিয়ে প্রতিস্থাপন করবে, ফলে আউটপুট হবে "Hello, Tcl!"

৬. স্ট্রিং ম্যাচিং (String Matching)

টিসিএল-এ একটি স্ট্রিংয়ের মধ্যে কোন নির্দিষ্ট সাবস্ট্রিং রয়েছে কি না, তা পরীক্ষা করতে string match কমান্ড ব্যবহার করা হয়।

set message "Hello, World!"
if {[string match "*World*" $message]} {
    puts "The message contains 'World'"
}

এখানে, string match "*World*" $message চেক করবে যে "World" সাবস্ট্রিংটি "Hello, World!" স্ট্রিংয়ে আছে কি না। যদি থাকে, তাহলে "The message contains 'World'" প্রিন্ট হবে।

৭. স্ট্রিং তুলনা (String Comparison)

টিসিএল-এ দুটি স্ট্রিং তুলনা করতে string equal বা string compare ব্যবহার করা হয়।

string equal উদাহরণ:

set str1 "Hello"
set str2 "hello"
if {[string equal $str1 $str2]} {
    puts "The strings are equal"
} else {
    puts "The strings are not equal"
}

এখানে, string equal কমান্ডটি দুটি স্ট্রিংকে তুলনা করবে, এবং আউটপুট হবে "The strings are not equal", কারণ স্ট্রিংগুলির মধ্যে ক্যাপিটালাইজেশন ভিন্ন।

string compare উদাহরণ:

set str1 "Apple"
set str2 "Banana"
set result [string compare $str1 $str2]
puts $result

এখানে, string compare কমান্ডটি দুটি স্ট্রিংয়ের তুলনা করবে এবং ফলস্বরূপ -1, 0 বা 1 প্রদান করবে। -1 মানে প্রথম স্ট্রিং দ্বিতীয়টির চেয়ে ছোট, 0 মানে উভয় স্ট্রিং সমান, এবং 1 মানে প্রথম স্ট্রিং দ্বিতীয়টির চেয়ে বড়।

৮. স্ট্রিং টিমিং (String Trimming)

টিসিএল-এ একটি স্ট্রিং-এর শুরু বা শেষ থেকে অতিরিক্ত স্পেস বা নির্দিষ্ট ক্যারেক্টার মুছে ফেলতে string trim কমান্ড ব্যবহার করা হয়।

string trim উদাহরণ:

set message "   Hello, World!   "
set trimmed [string trim $message]
puts $trimmed

এখানে, string trim কমান্ডটি স্ট্রিংয়ের শুরু এবং শেষে থাকা অতিরিক্ত স্পেসগুলো মুছে ফেলবে। আউটপুট হবে "Hello, World!"

৯. স্ট্রিং ক্যাস (String Case)

টিসিএল-এ স্ট্রিংয়ের কেস পরিবর্তন করতে string toupper এবং string tolower ব্যবহার করা হয়।

string toupper উদাহরণ:

set message "hello"
set upper_message [string toupper $message]
puts $upper_message

এখানে, string toupper কমান্ডটি "hello" স্ট্রিংয়ের সব অক্ষর বড় অক্ষরে পরিণত করবে, এবং আউটপুট হবে "HELLO"

string tolower উদাহরণ:

set message "HELLO"
set lower_message [string tolower $message]
puts $lower_message

এখানে, string tolower কমান্ডটি "HELLO" স্ট্রিংয়ের সব অক্ষর ছোট অক্ষরে পরিণত করবে, এবং আউটপুট হবে "hello"

১০. স্ট্রিং সাবস্ট্রিং ইনডেক্স (Substring Index)

টিসিএল-এ স্ট্রিংয়ের মধ্যে একটি সাবস্ট্রিংয়ের অবস্থান বের করার জন্য string first বা string last ব্যবহার করা হয়।

string first উদাহরণ:

set message "Hello, World!"
set index [string first "World" $message]
puts $index

এখানে, string first "World" $message কমান্ডটি "World" এর প্রথম উপস্থিতির ইনডেক্স বের করবে, এবং আউটপুট হবে 7 (কারণ "World" স্ট্রিংয়ের শুরু ৭ নম্বর ইনডেক্সে)।

উপসংহার

টিসিএল-এ স্ট্রিং হ্যান্ডলিং একটি অত্যন্ত শক্তিশালী ফিচার এবং এতে রয়েছে বিভিন্ন ধরনের ফাংশন ও কমান্ড যা স্ট্রিং ম্যানিপুলেশনকে সহজ ও দক্ষ করে তোলে। আপনি স্ট্রিংয়ের দৈর্ঘ্য বের করা, সাবস্ট্রিং কেটে ফেলা, স্ট্রিং প্রতিস্থাপন, তুলনা করা এবং আরও অনেক কিছু করতে পারবেন সহজেই। এই ফিচারগুলো স্ট্রিং সংক্রান্ত কাজের ক্ষেত্রে টিসিএল-কে অত্যন্ত উপযোগী করে তোলে।

Content added By

টিসিএল (Tcl) - Strings তৈরি এবং ম্যানিপুলেশন

স্ট্রিং টিসিএল-এ একটি অত্যন্ত গুরুত্বপূর্ণ ডেটা টাইপ। স্ট্রিং সাধারণত পাঠ্য বা চরিত্রের একটি সিকোয়েন্স থাকে, এবং এটি প্রোগ্রামিংয়ের অনেক গুরুত্বপূর্ণ কাজ যেমন ইনপুট, আউটপুট, এবং ডেটা প্রসেসিং এর জন্য ব্যবহৃত হয়। টিসিএল-এ স্ট্রিং তৈরি, প্রক্রিয়া, এবং ম্যানিপুলেশন করা সহজ এবং শক্তিশালী।

এখানে স্ট্রিং তৈরি এবং ম্যানিপুলেশন এর ধারণা এবং ব্যবহারের নিয়ম আলোচনা করা হলো।

১. স্ট্রিং তৈরি (Creating Strings)

টিসিএল-এ স্ট্রিং তৈরি করা অত্যন্ত সহজ। স্ট্রিং তৈরি করতে ডাবল কোট ( " " ) অথবা সিঙ্গল কোট ( ' ' ) ব্যবহার করা হয়। আপনি যে কোনো স্ট্রিং সরাসরি একটি ভেরিয়েবলে অ্যাসাইন করতে পারেন।

উদাহরণ:

set name "Azizur"
set greeting 'Hello, World!'

এখানে, name একটি স্ট্রিং এবং "Azizur" এতে সংরক্ষিত আছে, এবং greeting নামক স্ট্রিংটি 'Hello, World!' ধারণ করছে।

২. স্ট্রিং অ্যাক্সেস (Accessing String Characters)

স্ট্রিং থেকে একটি নির্দিষ্ট চরিত্র (character) বের করার জন্য, টিসিএল-এ স্ট্রিং সূচক ব্যবহার করা হয়। টিসিএল স্ট্রিং ইনডেক্সিং শুরু করে ০ থেকে।

উদাহরণ:

set greeting "Hello"
set firstChar [string index $greeting 0]
puts $firstChar ;# আউটপুট: H

এখানে, string index ব্যবহার করে greeting স্ট্রিংয়ের প্রথম চরিত্র H বের করা হয়েছে।

৩. স্ট্রিং যুক্ত করা (Concatenating Strings)

স্ট্রিং গুলি যুক্ত করতে (concatenate) আপনি সরাসরি স্পেস দিয়ে স্ট্রিংগুলো যোগ করতে পারেন। টিসিএল-এ একাধিক স্ট্রিং যুক্ত করার জন্য কোন বিশেষ অপারেটর প্রয়োজন হয় না, বরং সরাসরি স্ট্রিং গুলি পর পর লিখলেই এটি যুক্ত হয়ে যায়।

উদাহরণ:

set firstName "Azizur"
set lastName "Rahman"
set fullName "$firstName $lastName"
puts $fullName   ;# আউটপুট: Azizur Rahman

এখানে, দুটি স্ট্রিং (firstName এবং lastName) স্পেস দিয়ে যুক্ত করা হয়েছে এবং ফলস্বরূপ একটি পূর্ণ নাম তৈরি হয়েছে।

৪. স্ট্রিং দৈর্ঘ্য (String Length)

স্ট্রিংয়ের দৈর্ঘ্য (অর্থাৎ স্ট্রিংয়ে কয়টি ক্যারেকটার আছে) বের করতে string length কমান্ড ব্যবহার করা হয়।

উদাহরণ:

set name "Azizur"
set length [string length $name]
puts $length   ;# আউটপুট: 6

এখানে, string length কমান্ডটি "Azizur" স্ট্রিংয়ের দৈর্ঘ্য বের করেছে, যা ৬।

৫. স্ট্রিং পরিবর্তন (Modifying Strings)

স্ট্রিংয়ের মধ্যে কিছু পরিবর্তন করতে, যেমন একটি অংশ পরিবর্তন, মুছে ফেলা বা নতুন অংশ যোগ করতে string replace বা string map ব্যবহার করা হয়।

স্ট্রিং রিপ্লেসমেন্ট (Replacing String):

set greeting "Hello, World!"
set newGreeting [string replace $greeting 7 11 "Tcl"]
puts $newGreeting   ;# আউটপুট: Hello, Tcl!

এখানে, "World" কে "Tcl" দিয়ে পরিবর্তন করা হয়েছে।

স্ট্রিং ম্যানিপুলেশন:

set sentence "I love Tcl programming!"
set newSentence [string map {Tcl Python} $sentence]
puts $newSentence   ;# আউটপুট: I love Python programming!

এখানে, "Tcl" কে "Python" দিয়ে পরিবর্তন করা হয়েছে।

৬. স্ট্রিং টেস্টিং (Testing Strings)

স্ট্রিংয়ের কিছু বৈশিষ্ট্য পরীক্ষা করার জন্য টিসিএল-এ বেশ কিছু ফাংশন রয়েছে, যেমন স্ট্রিং খালি কি না, স্ট্রিং সমান কি না ইত্যাদি।

উদাহরণ:

  • স্ট্রিং সমান (Equality):

    set name1 "Azizur"
    set name2 "Azizur"
    if { [string equal $name1 $name2] } {
      puts "The strings are equal"
    } else {
      puts "The strings are not equal"
    }

    এখানে, string equal কমান্ডটি দুটি স্ট্রিংয়ের সমতা পরীক্ষা করে।

  • স্ট্রিং খালি (Empty String):

    set str ""
    if { [string length $str] == 0 } {
      puts "The string is empty"
    }

    এখানে, string length ব্যবহার করে স্ট্রিংয়ের দৈর্ঘ্য পরীক্ষা করা হয়েছে, যদি এটি ০ হয় তবে স্ট্রিংটি খালি।

৭. স্ট্রিং কিপিং (Trimming Strings)

স্ট্রিংয়ের শুরু এবং শেষের অপ্রয়োজনীয় স্পেসগুলো কেটে ফেলতে string trim ব্যবহার করা হয়।

উদাহরণ:

set str "   Hello, World!   "
set trimmedStr [string trim $str]
puts $trimmedStr   ;# আউটপুট: Hello, World!

এখানে, string trim কমান্ডটি স্ট্রিংয়ের শুরু এবং শেষের অতিরিক্ত স্পেসগুলো মুছে ফেলেছে।

৮. স্ট্রিং থেকে সাবস্ট্রিং বের করা (Extracting Substring from a String)

স্ট্রিং থেকে একটি অংশ বের করতে string range কমান্ড ব্যবহার করা হয়। এটি স্ট্রিংয়ের একটি নির্দিষ্ট অংশকে নির্দিষ্ট সূচক দিয়ে বের করে।

উদাহরণ:

set greeting "Hello, World!"
set subString [string range $greeting 0 4]
puts $subString   ;# আউটপুট: Hello

এখানে, string range কমান্ডটি "Hello, World!" স্ট্রিংয়ের প্রথম ৫টি অক্ষর (সূচক ০ থেকে ৪) বের করেছে।

৯. স্ট্রিং কনভার্সন (String Conversion)

টিসিএল-এ স্ট্রিংকে অন্যান্য টাইপে কনভার্ট করার জন্য string কমান্ডের বিভিন্ন ভেরিয়েন্ট রয়েছে।

উদাহরণ:

set number "123"
set result [expr {$number + 1}]
puts $result   ;# আউটপুট: 124

এখানে, "123" স্ট্রিংটি সরাসরি গাণিতিক অপারেশন করতে ব্যবহৃত হয়েছে, এবং টিসিএল এটি স্বয়ংক্রিয়ভাবে একটি ইন্টিজারে কনভার্ট করে।

১০. স্ট্রিং বিভক্ত (Splitting Strings)

স্ট্রিংকে নির্দিষ্ট ডেলিমিটার ব্যবহার করে ভাগ করতে string split ব্যবহার করা হয়।

উদাহরণ:

set sentence "apple banana orange"
set words [string split $sentence]
puts $words   ;# আউটপুট: apple banana orange

এখানে, string split স্ট্রিংটি স্পেস দিয়ে ভাগ করেছে এবং প্রত্যেকটি শব্দকে আলাদা করে দিয়েছে।

উপসংহার

টিসিএল-এ স্ট্রিং তৈরি, পরিবর্তন, এবং ম্যানিপুলেশন করা খুবই সহজ এবং শক্তিশালী। স্ট্রিং গঠন করা, অ্যাক্সেস করা, যুক্ত করা, দৈর্ঘ্য বের করা, এবং বিভিন্ন ধরনের পরিবর্তন সহজেই করা যায় টিসিএল-এর স্ট্রিং কমান্ড ব্যবহার করে। স্ট্রিং ম্যানিপুলেশন টুলস ব্যবহার করে আপনি স্ট্রিংয়ের উপর বিভিন্ন ধরনের কাজ যেমন টেস্টিং, কনভার্সন, স্প্লিট, ট্রিম ইত্যাদি করতে পারেন, যা প্রোগ্রামিংয়ে খুবই কার্যকরী।

Content added By

টিসিএল (Tcl) - String Functions: string, regexp, substr ইত্যাদি

টিসিএল (Tcl) ভাষায় স্ট্রিং ম্যানিপুলেশন এবং স্ট্রিং ফাংশন ব্যবহারে অনেক সুবিধা রয়েছে। স্ট্রিং থেকে বিভিন্ন উপাদান বের করা, স্ট্রিংয়ের মধ্যে বিশেষ ক্যারেক্টার খুঁজে পাওয়া, এবং স্ট্রিংয়ের বিভিন্ন অংশ পরিবর্তন বা প্রক্রিয়া করা যায় স্ট্রিং ফাংশনের মাধ্যমে। এখানে আমরা string, regexp, substr এবং অন্যান্য স্ট্রিং ফাংশনের ব্যবহার এবং উদাহরণ নিয়ে আলোচনা করবো।

১. string ফাংশন

টিসিএল-এ string একটি কমান্ড যা বিভিন্ন স্ট্রিং ম্যানিপুলেশন করতে ব্যবহৃত হয়। এই কমান্ডটির মাধ্যমে আপনি স্ট্রিংয়ের দৈর্ঘ্য বের করা, স্ট্রিং তুলনা করা, সাবস্ট্রিং বের করা, স্ট্রিংয়ের অংশ মুছতে পারেন।

১.১. স্ট্রিং দৈর্ঘ্য বের করা (string length)

string length কমান্ডটি একটি স্ট্রিংয়ের দৈর্ঘ্য (characters সংখ্যা) বের করে।

উদাহরণ:

set str "Hello"
set length [string length $str]
puts $length  ;# আউটপুট: 5

এখানে "Hello" স্ট্রিংয়ের দৈর্ঘ্য 5 হবে।

১.২. স্ট্রিং তুলনা (string compare)

string compare কমান্ডটি দুটি স্ট্রিং তুলনা করে এবং তাদের সমতা পরীক্ষার পর একটি মান ফেরত দেয়:

  • 0 যদি স্ট্রিং দুটি সমান হয়।
  • -1 বা 1 যদি স্ট্রিং দুটি ভিন্ন হয়।

উদাহরণ:

set str1 "apple"
set str2 "orange"
set result [string compare $str1 $str2]
puts $result  ;# আউটপুট: -1 (যেহেতু স্ট্রিং দুটি আলাদা)

১.৩. স্ট্রিং সাবস্ট্রিং বের করা (string range)

string range কমান্ডটি একটি স্ট্রিংয়ের নির্দিষ্ট অংশ বের করে দেয়।

উদাহরণ:

set str "Hello, World!"
set subStr [string range $str 0 4]
puts $subStr  ;# আউটপুট: Hello

এখানে, "Hello, World!" স্ট্রিংয়ের প্রথম পাঁচটি অক্ষর (০ থেকে ৪ পর্যন্ত) বের করা হয়েছে।

১.৪. স্ট্রিং রিপ্লেসমেন্ট (string replace)

string replace কমান্ডের মাধ্যমে একটি স্ট্রিংয়ের অংশ পরিবর্তন করা যায়।

উদাহরণ:

set str "I like apples"
set newStr [string replace $str 7 12 "oranges"]
puts $newStr  ;# আউটপুট: I like oranges

এখানে, "apples" শব্দটি "oranges" দিয়ে প্রতিস্থাপন করা হয়েছে।


২. regexp ফাংশন

টিসিএল-এ regexp (regular expression) ফাংশন ব্যবহার করে স্ট্রিংয়ের মধ্যে একটি নির্দিষ্ট প্যাটার্ন খুঁজে পাওয়া যায়। এটি স্ট্রিংয়ের মধ্যে মাচিং প্যাটার্নের জন্য পরীক্ষণ করে এবং ম্যাচ পাওয়ার পর প্রয়োজনীয় ফলাফল প্রদান করে।

২.১. স্ট্রিংয়ে প্যাটার্ন খোঁজা (regexp)

regexp কমান্ডটি একটি স্ট্রিংয়ের মধ্যে নির্দিষ্ট নিয়মিত অভিব্যক্তি (regular expression) অনুসারে প্যাটার্ন খুঁজে এবং মিলে গেলে সত্য (true) ফেরত দেয়।

উদাহরণ:

set str "The quick brown fox"
if {[regexp {quick} $str]} {
    puts "Found 'quick' in the string"
} else {
    puts "Not found"
}

এখানে, regexp কমান্ডটি "quick" শব্দটি "The quick brown fox" স্ট্রিংয়ের মধ্যে খুঁজে, যদি প্যাটার্ন মিলে, তবে "Found 'quick' in the string" আউটপুট করবে।

২.২. নির্দিষ্ট অংশ বের করা (regexp with match)

regexp কমান্ডে আপনি স্ট্রিংয়ের মধ্যে একটি অংশ বের করতে পারেন, এবং এটি ফেরত দেয়।

উদাহরণ:

set str "The quick brown fox"
if {[regexp {quick (\w+)} $str match word]} {
    puts "Matched word: $word"
} else {
    puts "No match"
}

এখানে, (\w+) একটি শব্দ খুঁজে বের করার জন্য ব্যবহার করা হচ্ছে, এবং তা word আর্গুমেন্টে ধরে রাখা হচ্ছে।


৩. substr ফাংশন

টিসিএল-এ substr কমান্ডটি একটি স্ট্রিংয়ের নির্দিষ্ট অংশ বের করতে ব্যবহৃত হয়। এটি একটি নির্দিষ্ট সূচক থেকে শুরু করে, যতটুকু অংশ আপনি চাইবেন তা বের করবে।

উদাহরণ:

set str "Hello, World!"
set subStr [string range $str 7 11]
puts $subStr  ;# আউটপুট: World

এখানে, string range দিয়ে "Hello, World!" স্ট্রিংয়ের ৭ থেকে ১১ পর্যন্ত অংশ (যা "World") বের করা হয়েছে।


৪. অন্য স্ট্রিং ফাংশনসমূহ

টিসিএল-এ স্ট্রিং ম্যানিপুলেশনের জন্য আরও কিছু ফাংশন রয়েছে, যেগুলো খুবই উপকারী:

৪.১. string tolower এবং string toupper

string tolower কমান্ডটি স্ট্রিংয়ের সব অক্ষরকে ছোট হাতের অক্ষরে রূপান্তর করে এবং string toupper কমান্ডটি সব অক্ষরকে বড় হাতের অক্ষরে রূপান্তর করে।

উদাহরণ (tolower):

set str "Hello"
set lowerStr [string tolower $str]
puts $lowerStr  ;# আউটপুট: hello

উদাহরণ (toupper):

set str "Hello"
set upperStr [string toupper $str]
puts $upperStr  ;# আউটপুট: HELLO

৪.২. string trim

string trim কমান্ডটি স্ট্রিংয়ের প্রথম এবং শেষের স্পেস (whitespace) মুছে দেয়।

উদাহরণ:

set str "   Hello   "
set trimmedStr [string trim $str]
puts $trimmedStr  ;# আউটপুট: Hello

উপসংহার

টিসিএল-এ স্ট্রিং ফাংশনসমূহ খুবই শক্তিশালী এবং সঠিকভাবে ব্যবহার করা হলে স্ট্রিং ম্যানিপুলেশন অনেক সহজ হয়। আপনি স্ট্রিং তুলনা, স্ট্রিং দৈর্ঘ্য বের করা, স্ট্রিং সাবস্ট্রিং বের করা, স্ট্রিং রিপ্লেসমেন্ট, এবং রেগুলার এক্সপ্রেশন ব্যবহার করে স্ট্রিংয়ের মধ্যে মান খুঁজে বের করতে পারেন। টিসিএল-এর string, regexp, substr এবং অন্যান্য স্ট্রিং ফাংশনগুলো স্ট্রিংয়ের উপর কার্যকরী অপারেশন করার জন্য অনেক উপকারী।

Content added By

টিসিএল (Tcl) - Pattern Matching এবং Regular Expressions

টিসিএল (Tcl) এ Pattern Matching এবং Regular Expressions (RegEx) ব্যবহার করে স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন অনুসন্ধান এবং ম্যাচিং করা যায়। এগুলি টেক্সট প্রক্রিয়াকরণের জন্য অত্যন্ত শক্তিশালী টুলস, যা আপনাকে টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করার জন্য খুবই সহায়ক হতে পারে।

১. Pattern Matching in Tcl

টিসিএল-এ Pattern Matching সাধারণত গ্লোবাল স্টাইলের প্যাটার্ন ম্যাচিং ব্যবহার করে করা হয়। গ্লোবাল স্টাইল প্যাটার্নে সাধারণত *, ?, এবং [] ব্যবহার করা হয়। টিসিএল স্ট্রিং মিলানোর জন্য string match এবং regexp কমান্ড ব্যবহার করতে পারে।

১.১. string match প্যাটার্ন ম্যাচিং

string match পদ্ধতিতে স্ট্রিংয়ের মধ্যে গ্লোব প্যাটার্ন (wildcards) ব্যবহার করা হয়। এই পদ্ধতিতে স্ট্রিংয়ে কোনো নির্দিষ্ট প্যাটার্ন মিলে কিনা পরীক্ষা করা হয়।

সাধারণ সিনট্যাক্স:

string match pattern string
  • pattern: প্যাটার্ন যা ম্যাচ করতে হবে।
  • string: সেই স্ট্রিং যার সাথে প্যাটার্ন মিলানো হবে।

উদাহরণ:

set str "hello world"
if { [string match "hello*" $str] } {
    puts "Pattern matched!"
}

এখানে, "hello*" প্যাটার্নটি "hello" দিয়ে শুরু হওয়া যে কোনো স্ট্রিং এর সাথে মিলবে। যদি মিল মেলে, তবে "Pattern matched!" আউটপুট হবে।

১.২. Pattern Matching Operators

  • *: শূন্য বা একাধিক অক্ষর।
  • ?: একক অক্ষর।
  • []: একটি অক্ষরের রেঞ্জ (যেমন [a-z] অথবা [0-9])।

উদাহরণ:

set str "test123"
if { [string match "test???" $str] } {
    puts "Pattern matched!"
}

এখানে, "test???" প্যাটার্নটি "test" এর পরে ৩টি যে কোনো অক্ষরের সাথে মিলবে।


২. Regular Expressions (RegEx)

টিসিএল-এ Regular Expressions (RegEx) আরও শক্তিশালী এবং লচিলভাবে স্ট্রিং প্যাটার্ন চেক করার জন্য ব্যবহৃত হয়। টিসিএল এর regexp কমান্ড ব্যবহার করে আপনি একটি স্ট্রিংয়ের মধ্যে যে কোনো প্যাটার্ন ম্যাচ করতে পারেন।

২.১. regexp কমান্ড

সাধারণ সিনট্যাক্স:

regexp ?options? pattern string ?matchVar?
  • pattern: যে প্যাটার্নটির জন্য মিল খোঁজা হবে।
  • string: যেখানে প্যাটার্ন মিলাতে হবে।
  • matchVar: মিল পাওয়া অংশটি যেখানে সঞ্চিত হবে।
  • options: অপশনস যেমন -inline, -all ইত্যাদি।

উদাহরণ:

set str "The price is 100 dollars."
if { [regexp {(\d+)} $str match] } {
    puts "Match found: $match"
}

এখানে, {(\d+)} একটি রেগুলার এক্সপ্রেশন যা স্ট্রিংয়ের মধ্যে যেকোনো সংখ্যাকে খুঁজে বের করে। এর ফলস্বরূপ, match ভেরিয়েবলে 100 সঞ্চিত হবে, এবং "Match found: 100" আউটপুট হবে।

২.২. RegEx Matching Options

  • -all: সমস্ত মিল খুঁজে বের করে (যেমন একাধিক প্যাটার্নে ম্যাচ)।
  • -inline: প্রথম মিল পাওয়ার পরেই প্যাটার্নটি ফিরিয়ে দেয়, পুরো স্ট্রিং না দেখে।
  • -nocase: প্যাটার্নের তুলনা বড়-ছোট অক্ষর ভেদে না করে।

উদাহরণ (all option):

set str "apple orange apple banana"
regexp -all {apple} $str match
puts $match  ;# আউটপুট: apple apple

এখানে, -all অপশনটি ব্যবহার করা হয়েছে যাতে apple প্যাটার্নটি স্ট্রিংয়ের সব মিলের সাথে ম্যাচ হয়।

২.৩. RegEx Groups

রেগুলার এক্সপ্রেশন গ্রুপের মাধ্যমে আপনি প্যাটার্নের বিভিন্ন অংশ আলাদা করে বের করতে পারেন।

উদাহরণ:

set str "The date is 2024-11-12."
regexp {(\d{4})-(\d{2})-(\d{2})} $str match year month day
puts "Year: $year, Month: $month, Day: $day"

এখানে, {(\d{4})-(\d{2})-(\d{2})} রেগুলার এক্সপ্রেশনটি একটি তারিখের ফরম্যাট ম্যাচ করে এবং ৩টি অংশ আলাদা করে: বছর, মাস এবং দিন। আউটপুট হবে:

Year: 2024, Month: 11, Day: 12

৩. RegEx Special Characters

রেগুলার এক্সপ্রেশন ব্যবহার করার সময় কিছু বিশেষ চরিত্র রয়েছে যেগুলি প্যাটার্নের সাথে মিলের জন্য ব্যবহৃত হয়। নিচে কিছু সাধারণ বিশেষ চরিত্র দেওয়া হলো:

  • .: যে কোনো একক অক্ষর (নিউলাইন ছাড়া)।
  • \d: যে কোনো ডিজিট (০-৯)।
  • \w: যে কোনো অক্ষর বা সংখ্যা (a-z, A-Z, 0-9)।
  • \s: সাদা স্থান (স্পেস, ট্যাব ইত্যাদি)।
  • +: পূর্ববর্তী অংশটি এক বা একাধিকবার উপস্থিত হতে পারে।
  • *: পূর্ববর্তী অংশটি শূন্য বা একাধিকবার উপস্থিত হতে পারে।
  • ?: পূর্ববর্তী অংশটি শূন্য বা একবার উপস্থিত হতে পারে।

উদাহরণ (Special Characters):

set str "abc 123 xyz"
if { [regexp {\d+} $str] } {
    puts "Numbers found in the string."
}

এখানে, \d+ ব্যবহার করা হয়েছে যাতে যে কোনো সংখ্যা স্ট্রিংয়ে খুঁজে বের করা যায়।


উপসংহার

টিসিএল-এ Pattern Matching এবং Regular Expressions ব্যবহারের মাধ্যমে আপনি স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন অনুসন্ধান এবং টেক্সট ম্যানিপুলেশন করতে পারেন। Pattern Matching টুলস যেমন string match এবং Regular Expressions টুলস যেমন regexp অত্যন্ত শক্তিশালী এবং নমনীয় স্ট্রিং ম্যানিপুলেশন করতে সহায়ক। এগুলি কোডের কার্যকারিতা ও নমনীয়তা বাড়াতে সাহায্য করে এবং আরও শক্তিশালী টেক্সট প্রসেসিং করতে সক্ষম করে।

Content added By

টিসিএল (Tcl) - String Concatenation এবং Substitution Techniques

টিসিএল (Tcl) ভাষায় স্ট্রিং ম্যানিপুলেশন অত্যন্ত সহজ এবং কার্যকরী। String Concatenation এবং String Substitution হল দুটি গুরুত্বপূর্ণ টেকনিক যা টিসিএল স্ক্রিপ্টে স্ট্রিং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। নিচে এই দুটি টেকনিকের বিস্তারিত ব্যাখ্যা দেওয়া হলো।

১. String Concatenation (স্ট্রিং কনক্যাটেনেশন)

স্ট্রিং কনক্যাটেনেশন হল দুটি বা একাধিক স্ট্রিংকে একত্রিত (join) করা। টিসিএল-এ স্ট্রিং কনক্যাটেনেশনের জন্য কোনো নির্দিষ্ট অপারেটর বা ফাংশন নেই, বরং স্পেস ব্যবহার করে একাধিক স্ট্রিং যুক্ত করা হয়।

১.১. স্ট্রিং কনক্যাটেনেশন উদাহরণ:

set firstName "Azizur"
set lastName "Rahman"
set fullName "$firstName $lastName"
puts $fullName   ;# আউটপুট: Azizur Rahman

এখানে, firstName এবং lastName দুটি স্ট্রিংকে একটি স্পেস দিয়ে যোগ করে fullName তৈরি করা হয়েছে।

১.২. একাধিক স্ট্রিং কনক্যাটেনেশন:

একাধিক স্ট্রিংকে কনক্যাটেনেট (যোগ) করার জন্য স্পেস ব্যবহৃত হয়। টিসিএল সরাসরি স্ট্রিংগুলোকে একত্রিত করতে পারে।

set greeting "Hello"
set name "Azizur"
set message "$greeting, $name!"
puts $message  ;# আউটপুট: Hello, Azizur!

এখানে, greeting এবং name দুটি স্ট্রিংকে যোগ করে একটি নতুন স্ট্রিং message তৈরি করা হয়েছে।

১.৩. স্ট্রিং কনক্যাটেনেশন এ ফাংশন ব্যবহার:

ফাংশনের মধ্যে স্ট্রিং কনক্যাটেনেশন খুবই সহজ। আপনি স্ট্রিংগুলো একত্রিত করতে ফাংশন ব্যবহার করতে পারেন।

proc greet {firstName lastName} {
    set message "$firstName $lastName"
    puts "Hello, $message!"
}

greet "Azizur" "Rahman"   ;# আউটপুট: Hello, Azizur Rahman!

এখানে, greet ফাংশনটি দুটি আর্গুমেন্ট গ্রহণ করে এবং তাদের যোগফল একটি স্ট্রিং হিসেবে রিটার্ন করে।


২. String Substitution (স্ট্রিং সাবস্টিটিউশন)

স্ট্রিং সাবস্টিটিউশন হলো একটি স্ট্রিংয়ে কোন কিছু পরিবর্তন করা বা ভেরিয়েবলটির মান ইনসার্ট করা। টিসিএল-এ স্ট্রিং সাবস্টিটিউশন সাধারণত ভেরিয়েবলসকে স্ট্রিংয়ের মধ্যে অন্তর্ভুক্ত করার জন্য ব্যবহৃত হয়। টিসিএল-এ স্ট্রিং সাবস্টিটিউশন মূলত দুইটি উপায়ে কাজ করে:

  • একমাত্র ভেরিয়েবল সাবস্টিটিউশন
  • নিয়মিত এক্সপ্রেশন সাবস্টিটিউশন

২.১. একমাত্র ভেরিয়েবল সাবস্টিটিউশন:

টিসিএল-এ স্ট্রিং সাবস্টিটিউশনের সবচেয়ে সহজ এবং সাধারণ পদ্ধতি হল ভেরিয়েবলকে ডবল কোটস "$variable" ব্যবহার করে স্ট্রিংয়ের মধ্যে অন্তর্ভুক্ত করা। এটি ভেরিয়েবলটির মান সরাসরি স্ট্রিংয়ে প্রতিস্থাপন করে।

set name "Azizur"
set greeting "Hello, $name!"
puts $greeting   ;# আউটপুট: Hello, Azizur!

এখানে, $name ভেরিয়েবলের মান "Azizur" স্ট্রিংয়ের মধ্যে প্রতিস্থাপন হয়ে "Hello, Azizur!" আউটপুট তৈরি হয়েছে।

২.২. নিয়মিত এক্সপ্রেশন সাবস্টিটিউশন:

টিসিএল-এ নিয়মিত এক্সপ্রেশন ব্যবহার করে স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করে তা প্রতিস্থাপন করা যায়। এটি আরও জটিল পরিবর্তনের জন্য ব্যবহৃত হয়, যেমন একটি স্ট্রিংয়ের মধ্যে বিশেষ প্যাটার্ন খুঁজে পরিবর্তন করা।

set text "The quick brown fox"
set newText [string map {"quick" "fast"} $text]
puts $newText  ;# আউটপুট: The fast brown fox

এখানে, string map কমান্ডের মাধ্যমে "quick" শব্দটি "fast" দিয়ে প্রতিস্থাপন করা হয়েছে।

২.৩. কাস্টম সাবস্টিটিউশন (Custom Substitution):

এছাড়াও, আপনি custom substitution করতে পারেন যেখানে স্ট্রিংয়ের নির্দিষ্ট অংশের বদলে নতুন মান দিয়ে পরিবর্তন করা হয়।

set message "Hello, my name is <name>"
set message [string map {"<name>" "Azizur"} $message]
puts $message   ;# আউটপুট: Hello, my name is Azizur

এখানে, <name> স্ট্রিংটিকে "Azizur" দিয়ে প্রতিস্থাপন করা হয়েছে।

২.৪. এস্কেপ সিকোয়েন্স ব্যবহার (Escape Sequences):

টিসিএল-এ স্ট্রিং সাবস্টিটিউশন করার সময় আপনি কিছু বিশেষ চরিত্র ব্যবহার করতে পারেন, যেমন \n (নতুন লাইন), \t (ট্যাব), বা \\ (ব্যাকস্ল্যাশ)।

set str "Hello\nWorld"
puts $str   ;# আউটপুট: 
# Hello
# World

এখানে, \n একটি নতুন লাইনের চরিত্র যা টিসিএল স্ট্রিং সাবস্টিটিউশন দ্বারা গ্রহণ করা হচ্ছে।


৩. Concatenation এবং Substitution একসাথে ব্যবহার

স্ট্রিং কনক্যাটেনেশন এবং সাবস্টিটিউশন একসাথে ব্যবহার করা হয় যখন আপনাকে একটি স্ট্রিং তৈরি করতে হয় যেটিতে ভেরিয়েবল এবং অন্যান্য স্ট্রিং যোগ করা হয়।

set firstName "Azizur"
set lastName "Rahman"
set greeting "Hello, $firstName $lastName!"
puts $greeting  ;# আউটপুট: Hello, Azizur Rahman!

এখানে, স্ট্রিং কনক্যাটেনেশন এবং স্ট্রিং সাবস্টিটিউশন একসাথে ব্যবহার করা হয়েছে যাতে পুরো বার্তা তৈরি করা যায়।


উপসংহার

টিসিএল-এ String Concatenation এবং String Substitution শক্তিশালী টেকনিক যা স্ট্রিং ম্যানিপুলেশন এবং কোডের নমনীয়তা বৃদ্ধি করতে সহায়তা করে। স্ট্রিং কনক্যাটেনেশন দ্বারা একাধিক স্ট্রিং একত্রিত করা যায় এবং স্ট্রিং সাবস্টিটিউশন দ্বারা ভেরিয়েবল মান এবং কাস্টম প্যাটার্ন পরিবর্তন করা যায়। এই টেকনিকগুলো প্রোগ্রামিংয়ে স্ট্রিংয়ের উপর আরও কার্যকরী কাজ করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...