একটি স্ট্রিং টেক্সট ডেটা উপস্থাপন করে।
Swift-এ, একটি String হলো Character মানের একটি ক্রমবদ্ধ কালেকশন, যেখানে প্রতিটি ক্যারেক্টার একটি ইউনিকোড ক্যারেক্টার উপস্থাপন করে।
আপনি একটি স্ট্রিং লিটারাল ব্যবহার করে স্ট্রিং তৈরি করেন, যা ডাবল কোটেশন চিহ্ন (") দিয়ে ঘেরা ক্যারেক্টারের একটি ক্রম।
মাল্টি-লাইন স্ট্রিংয়ের জন্য তিনটি ডাবল কোটেশন চিহ্ন (""") ব্যবহার করুন:
let hello: String = "Hello, World!"
let poem: String = """
Roses are red,
Violets are blue.
Sugar is sweet,
And so are you.
"""
Swift স্ট্রিংগুলো Foundation ফ্রেমওয়ার্কের NSString ক্লাসের সাথে নির্বিঘ্নে সংযুক্ত হয়, যার ফলে বিস্তৃত টেক্সট-প্রসেসিং সুবিধা পাওয়া যায়।
একটি Character হলো একটি এক্সটেন্ডেড গ্রাফিম ক্লাস্টার, অর্থাৎ একটি একক পাঠযোগ্য ক্যারেক্টার, যা এক বা একাধিক ইউনিকোড স্কেলার মান দিয়ে গঠিত।
একটি ইউনিকোড স্কেলার মান হলো U+0000 থেকে U+D7FF বা U+E000 থেকে U+10FFFF পরিসরের একটি ২১-বিট কোড পয়েন্ট, যেখানে দুই প্রান্তই অন্তর্ভুক্ত।
let aChar: Character = "A"
যখন আপনি একটি স্ট্রিং লিটারাল লেখেন, Swift স্বয়ংক্রিয়ভাবে তার টাইপ String হিসেবে ধরে নেয়।
একটি একক ক্যারেক্টারকে Character হিসেবে সংরক্ষণ করতে হলে আপনাকে স্পষ্টভাবে একটি টাইপ অ্যানোটেশন দিতে হবে:
let aString = "A" // Inferred as String
let aChar: Character = "A" // Explicitly typed as Character
print(type(of: aString)) // Prints String
print(type(of: aChar)) // Prints Character
// The following code will not compile:
let badChar: Character = "Too many characters"
// Error: Cannot convert value of type 'String' to specified type 'Character'
যোগ অপারেটর (+) ব্যবহার করে আপনি স্ট্রিংগুলো একসাথে জোড়া লাগাতে পারেন:
print("honey" + "comb")
// Prints "honeycomb"
প্রথমে ক্যারেক্টারটিকে স্ট্রিংয়ে রূপান্তর না করে আপনি + দিয়ে সরাসরি একটি Character কে String-এর সাথে কনক্যাটেনেট করতে পারবেন না।
তবে, আপনি append(_:) মেথড ব্যবহার করে সরাসরি একটি মিউটেবল স্ট্রিংয়ে স্ট্রিং বা ক্যারেক্টার যেকোনোটি যোগ করতে পারেন:
var greeting = "Hello"
let world = ", world"
let period: Character = "."
greeting.append(world)
print(greeting) // Prints "Hello, world"
greeting.append(period)
print(greeting) // Prints "Hello, world."
স্ট্রিং ইন্টারপোলেশন আপনাকে স্ট্রিং লিটারালের ভেতরে কনস্ট্যান্ট, ভ্যারিয়েবল, লিটারাল ও এক্সপ্রেশন এমবেড করে একটি স্ট্রিং তৈরি করার সুযোগ দেয়।
ব্যাকস্ল্যাশ দিয়ে শুরু হওয়া প্রথম বন্ধনীর ভেতরে প্রতিটি এক্সপ্রেশন রাখুন (\( ... )):
let radius = 5.0
let circle = "The area of a circle with radius \(radius) is \(Double.pi * radius * radius)"
print(circle) // Prints "The area of a circle with radius 5.0 is 78.53981633974483"
স্ট্রিং ও ক্যারেক্টারে তাদের বিষয়বস্তু পরীক্ষা করার জন্য বেশ কিছু প্রপার্টি আছে।
কমন স্ট্রিং প্রপার্টির মধ্যে রয়েছে:
| প্রপার্টি | বিবরণ | উদাহরণ |
|---|---|---|
isEmpty |
স্ট্রিংয়ে কোনো ক্যারেক্টার না থাকলে true রিটার্ন করে |
"Hello".isEmpty-এর মান false
|
count |
স্ট্রিংয়ে ক্যারেক্টারের সংখ্যা রিটার্ন করে |
"Hello".count-এর মান 5
|
প্রপার্টিগুলোর সম্পূর্ণ তালিকার জন্য Apple-এর স্ট্রিং ডকুমেন্টেশন দেখুন।
কমন ক্যারেক্টার প্রপার্টির মধ্যে রয়েছে:
| প্রপার্টি | বিবরণ | উদাহরণ |
|---|---|---|
isLowercase |
ক্যারেক্টারটি ছোট হাতের হলে true রিটার্ন করে |
"a".isLowercase-এর মান true
|
isUppercase |
ক্যারেক্টারটি বড় হাতের হলে true রিটার্ন করে |
"A".isUppercase-এর মান true
|
isNumber |
ক্যারেক্টারটি একটি অঙ্ক হলে true রিটার্ন করে |
"1".isNumber-এর মান true
|
isWhitespace |
ক্যারেক্টারটি হোয়াইটস্পেস হলে true রিটার্ন করে |
" ".isWhitespace-এর মান true
|
প্রপার্টিগুলোর সম্পূর্ণ তালিকার জন্য Apple-এর ক্যারেক্টার ডকুমেন্টেশন দেখুন।
আপনি String(_:) ইনিশিয়ালাইজার ব্যবহার করে অন্য টাইপগুলোকে স্ট্রিংয়ে রূপান্তর করতে পারেন, যা Int, Double ও Character-এর মতো স্ট্যান্ডার্ড টাইপ সাপোর্ট করে:
let charX: Character = "x"
print(String(charX)) // Prints "x"
print(String(110)) // Prints "110"
print(String(Double.pi)) // Prints "3.141592653589793"
Swift স্ট্রিং লিটারাল বিশেষ ক্যারেক্টারের জন্য বেশ কিছু এস্কেপ সিকোয়েন্স সাপোর্ট করে:
| সিকোয়েন্স | বিবরণ |
|---|---|
\0 |
নাল ক্যারেক্টার |
\\ |
ব্যাকস্ল্যাশ |
\t |
হরাইজন্টাল ট্যাব |
\n |
লাইন ফিড (নিউলাইন) |
\r |
ক্যারেজ রিটার্ন |
\' |
সিঙ্গেল কোটেশন চিহ্ন |
\" |
ডাবল কোটেশন চিহ্ন |
\u{n} |
যেকোনো ইউনিকোড স্কেলার (হেক্সাডেসিমাল) |
let quote: String = "\"Hello\", he said."
print(quote) // Prints "Hello", he said.
let unicode: Character = "\u{1F496}"
print(unicode) // Prints 💖
এই অনুশীলনীতে আপনি একটি সাইন কোম্পানিকে তাদের সাইনের জন্য কাস্টম বার্তা তৈরি করতে সাহায্য করার কোড লিখবেন।
নিচের ধ্রুবক স্ট্রিংগুলো ডিফাইন করুন, যেগুলো সাইন তৈরি করতে ব্যবহার করা হবে:
birthday: এতে "Birthday" মানটি থাকেvalentine: এতে "Valentine's Day" মানটি থাকেanniversary: এতে "Anniversary" স্ট্রিংটি থাকেনিচের ধ্রুবক ক্যারেক্টারগুলো ডিফাইন করুন, যেগুলো সাইন তৈরি করতে ব্যবহার করা হবে:
space: এতে " " মানটি থাকে (একটি মাত্র স্পেস)exclamation: এতে "!" মানটি থাকেbuildSign(for:name:) ফাংশনটি ইমপ্লিমেন্ট করুন, যা for আর্গুমেন্ট নেয়, যেটি প্রথম টাস্কে আপনি ডিফাইন করা তিনটি স্ট্রিংয়ের একটি ধারণ করে, আর name আর্গুমেন্ট নেয়, যেটি এমন একটি স্ট্রিং যা ধারণ করে সাইনটি যার জন্য সেই ব্যক্তির নাম।
সাইনের বার্তা গড়ে তুলতে আপনাকে কনক্যাটেনেশন ব্যবহার করতে হবে এবং আগে থেকে ডিফাইন করা ধ্রুবকগুলো আবার ব্যবহার করার কথা মনে রাখতে হবে।
ফাংশনটি সাইন বার্তাটি একটি স্ট্রিং হিসেবে রিটার্ন করবে।
buildSign(for: birthday, name: "Otto")
// returns "Happy Birthday Otto!"
buildSign(for: anniversary, name: "Valentina")
// returns "Happy Anniversary Valentina!"
graduationFor(name:year:) ফাংশনটি ইমপ্লিমেন্ট করুন, যা name আর্গুমেন্ট নেয়, যেটি এমন একটি স্ট্রিং যা ধারণ করে সাইনটি যার জন্য সেই ব্যক্তির নাম, আর year আর্গুমেন্ট নেয়, যেটি একটি ইন্টিজার যা ধারণ করে ব্যক্তিটি যে বছর গ্র্যাজুয়েট করছে সেই বছর।
সাইনের বার্তা গড়ে তুলতে আপনাকে টেমপ্লেট স্ট্রিং ব্যবহার করতে হবে।
ফাংশনটি সাইন বার্তাটি একটি স্ট্রিং হিসেবে রিটার্ন করবে।
graduationFor(name: "Padma", year: 2023)
// returns "Congratulations Padma!\nClass of 2023"
costOf(sign:) ফাংশনটি ইমপ্লিমেন্ট করুন, যা sign আর্গুমেন্ট নেয়, যেটি এমন একটি স্ট্রিং যা সাইনের বার্তাটি ধারণ করে।
সাইনটির প্রদত্ত মুদ্রায় একটি বেস প্রাইস আছে ২০। এছাড়া প্রতিটি অক্ষরের খরচ ২ (হিসাবের মধ্যে হোয়াইটস্পেসও ধরা হয়)।
ফাংশনটি সাইনটির খরচ একটি ইন্টিজার হিসেবে রিটার্ন করবে।
costOf(sign: "Happy Birthday Grandma!")
// returns 66
Exercism-এ সাইন আপ করুন, Swift ট্র্যাকের 35টি কনসেপ্ট116টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।