সুইফট 4 এর জন্য আপডেট
সুইফ্ট 4-এ, আবারও Stringমানানসই Collection, সুতরাং ব্যবহার dropFirstএবং dropLastস্ট্রিংয়ের শুরু এবং শেষগুলি ছাঁটাই করা সম্ভব । ফলাফলটি প্রকারভেদে Substring, তাই কোনওটি Stringফিরে পেতে আপনার এটি নির্মাণকারীর কাছে পৌঁছে দিতে হবে String:
let str = "hello"
let result1 = String(str.dropFirst()) // "ello"
let result2 = String(str.dropLast()) // "hell"
dropFirst()এবং dropLast()এছাড়াও একটি নিতে Intড্রপ অক্ষরের সংখ্যা উল্লেখ করার:
let result3 = String(str.dropLast(3)) // "he"
let result4 = String(str.dropFirst(4)) // "o"
আপনি যদি স্ট্রিংয়ের চেয়ে বেশি অক্ষর বাদ দিতে নির্দিষ্ট করেন তবে ফলাফলটি খালি স্ট্রিং ( "") হবে।
let result5 = String(str.dropFirst(10)) // ""
সুইফট 3 এর জন্য আপডেট
আপনি যদি কেবলমাত্র প্রথম অক্ষরটি সরাতে এবং স্থানে মূল স্ট্রিংটি পরিবর্তন করতে চান তবে @ মিকম্যাককলামের উত্তর দেখুন। আপনি যদি প্রক্রিয়াটিতে একটি নতুন স্ট্রিং তৈরি করতে চান তবে ব্যবহার করুন substring(from:)। একটি এক্সটেনশন সঙ্গে String, আপনি কদর্যতা লুকিয়ে রাখতে পারেন substring(from:)এবং substring(to:)শুরু করুন এবং প্রান্ত ছাঁটা দরকারী সংযোজন তৈরি করতে String:
extension String {
func chopPrefix(_ count: Int = 1) -> String {
return substring(from: index(startIndex, offsetBy: count))
}
func chopSuffix(_ count: Int = 1) -> String {
return substring(to: index(endIndex, offsetBy: -count))
}
}
"hello".chopPrefix() // "ello"
"hello".chopPrefix(3) // "lo"
"hello".chopSuffix() // "hell"
"hello".chopSuffix(3) // "he"
তাদের মতো dropFirstএবং তার dropLastআগে, স্ট্রিংয়ে পর্যাপ্ত অক্ষর না থাকলে এই ফাংশনগুলি ক্রাশ হয়ে যাবে। এগুলি সঠিকভাবে ব্যবহার করার জন্য কলিংকারীদের উপর অনুনাস রয়েছে। এটি একটি বৈধ ডিজাইনের সিদ্ধান্ত। কেউ তাদের themচ্ছিক ফেরত দিতে তাদের লিখতে পারে যা কলারের দ্বারা আন-আপ করা উচিত।
সুইফট 2.x
হায়রে সুইফট 2 , dropFirstএবং dropLast(পূর্ববর্তী সবচেয়ে ভালো সমাধান) হিসেবে সুবিধাজনক হিসাবে তারা আগে ছিল না। একটি এক্সটেনশন সঙ্গে String, আপনি কদর্যতা লুকিয়ে রাখতে পারেন substringFromIndexএবং substringToIndex:
extension String {
func chopPrefix(count: Int = 1) -> String {
return self.substringFromIndex(advance(self.startIndex, count))
}
func chopSuffix(count: Int = 1) -> String {
return self.substringToIndex(advance(self.endIndex, -count))
}
}
"hello".chopPrefix() // "ello"
"hello".chopPrefix(3) // "lo"
"hello".chopSuffix() // "hell"
"hello".chopSuffix(3) // "he"
তাদের মতো dropFirstএবং তার dropLastআগে, স্ট্রিংয়ে পর্যাপ্ত অক্ষর না থাকলে এই ফাংশনগুলি ক্রাশ হয়ে যাবে। এগুলি সঠিকভাবে ব্যবহার করার জন্য কলিংকারীদের উপর অনুনাস রয়েছে। এটি একটি বৈধ ডিজাইনের সিদ্ধান্ত। কেউ তাদের themচ্ছিক ফেরত দিতে তাদের লিখতে পারে যা কলারের দ্বারা আন-আপ করা উচিত।
ইন সুইফট 1.2 , আপনাকে কল করতে হবে chopPrefixএভাবে:
"hello".chopPrefix(count: 3) // "lo"
অথবা আপনি _প্যারামিটারের নামটি দমন করতে ফাংশন সংজ্ঞাগুলিতে একটি আন্ডারস্কোর যুক্ত করতে পারেন :
extension String {
func chopPrefix(_ count: Int = 1) -> String {
return self.substringFromIndex(advance(self.startIndex, count))
}
func chopSuffix(_ count: Int = 1) -> String {
return self.substringToIndex(advance(self.endIndex, -count))
}
}
advanceকাস্ট করে পুরো জিনিসটি এড়াতে পারবেনdisplay.text!। আমি বলছি না এটি একটি ভাল সমাধান - কেবল একটি সম্ভাব্য ভুল ধারণাটি সংশোধন করে। এনএসএসস্ট্রিং এর সাহায্যে আপনি ইন্টের সাথে এটিতে সূচক করতে পারেন । - এবং আপনি যে কারণে ইন্টের সাথে সূচক করতে পারবেন না তা ইউনিকোডের কারণে নয়; এর কারণ একটি চরিত্রটিতে একাধিক যৌগিক কোডপয়েন্ট থাকতে পারে।