আমি কীভাবে সুইফট ব্যবহার করে স্ট্রিং ভেরিয়েবল থেকে শেষ চরিত্রটি সরিয়ে ফেলতে পারি? ডকুমেন্টেশনে এটি খুঁজে পাচ্ছি না।
এখানে সম্পূর্ণ উদাহরণ:
var expression = "45+22"
expression = expression.substringToIndex(countElements(expression) - 1)
আমি কীভাবে সুইফট ব্যবহার করে স্ট্রিং ভেরিয়েবল থেকে শেষ চরিত্রটি সরিয়ে ফেলতে পারি? ডকুমেন্টেশনে এটি খুঁজে পাচ্ছি না।
এখানে সম্পূর্ণ উদাহরণ:
var expression = "45+22"
expression = expression.substringToIndex(countElements(expression) - 1)
উত্তর:
সুইফট ৪.০ (সুইফট ৫.০)
var str = "Hello, World" // "Hello, World"
str.dropLast() // "Hello, Worl" (non-modifying)
str // "Hello, World"
String(str.dropLast()) // "Hello, Worl"
str.remove(at: str.index(before: str.endIndex)) // "d"
str // "Hello, Worl" (modifying)
সুইফট 3.0
এপিআইগুলি আরও কিছুটা দ্রুতগতি অর্জন করেছে এবং ফলস্বরূপ ফাউন্ডেশনের এক্সটেনশনটি কিছুটা পরিবর্তিত হয়েছে:
var name: String = "Dolphin"
var truncated = name.substring(to: name.index(before: name.endIndex))
print(name) // "Dolphin"
print(truncated) // "Dolphi"
বা স্থানস্থ সংস্করণ:
var name: String = "Dolphin"
name.remove(at: name.index(before: name.endIndex))
print(name) // "Dolphi"
ধন্যবাদ জেমি, রব অ্যালেন!
সুইফট 2.0+ ওয়ে
এটি সম্পাদন করার কয়েকটি উপায় রয়েছে:
সুইফট লাইব্রেরির অংশ না হয়েও ফাউন্ডেশনের সম্প্রসারণের মাধ্যমে:
var name: String = "Dolphin"
var truncated = name.substringToIndex(name.endIndex.predecessor())
print(name) // "Dolphin"
print(truncated) // "Dolphi"
removeRange()
পদ্ধতিটি (যা পরিবর্তিত হয় name
) ব্যবহার করে :
var name: String = "Dolphin"
name.removeAtIndex(name.endIndex.predecessor())
print(name) // "Dolphi"
dropLast()
ফাংশন ব্যবহার :
var name: String = "Dolphin"
var truncated = String(name.characters.dropLast())
print(name) // "Dolphin"
print(truncated) // "Dolphi"
ওল্ড স্ট্রিং.ইনডেক্স (এক্সকোড 6 বিটা 4 +) ওয়ে
যেহেতু String
সুইফটে টাইপগুলি সর্বোত্তম ইউটিএফ -8 সমর্থন সরবরাহ করে, তাই আপনি আর Int
প্রকারগুলি ব্যবহার করে অক্ষর সূচক / রেঞ্জ / সাবস্ট্রিংগুলি অ্যাক্সেস করতে পারবেন না । পরিবর্তে, আপনি ব্যবহার String.Index
:
let name: String = "Dolphin"
let stringLength = count(name) // Since swift1.2 `countElements` became `count`
let substringIndex = stringLength - 1
name.substringToIndex(advance(name.startIndex, substringIndex)) // "Dolphi"
বিকল্পভাবে (আরও ব্যবহারিক, তবে কম শিক্ষামূলক উদাহরণের জন্য) আপনি ব্যবহার করতে পারেন endIndex
:
let name: String = "Dolphin"
name.substringToIndex(name.endIndex.predecessor()) // "Dolphi"
নোট: আমি দেখেছি এই বোঝার জন্য একটি দুর্দান্ত আদ্যস্থল হতেString.Index
পুরাতন (প্রাক-বিটা 4) উপায়
substringToIndex()
দৈর্ঘ্যের চেয়ে কম প্রদান করে আপনি কেবল ফাংশনটি ব্যবহার করতে পারেন String
:
let name: String = "Dolphin"
name.substringToIndex(countElements(name) - 1) // "Dolphi"
substringToIndex
substringToIndex
না substringFromIndex
। এটি আপনাকে বুদ্ধিমান ভুল বুঝতে অনুভব করে না, আমি আপনাকে বলি।
substringToIndex
। এছাড়াও, এক্সকোড of হিসাবে স্ট্রিংয়ের আর কোনও .count
সম্পত্তি নেই, এটি এখন কেবল অক্ষরগুলিতে প্রয়োগ করা হয়:string.characters.count
var truncated = name.substring(to: name.index(before: name.endIndex))
গ্লোবাল dropLast()
ফাংশন ক্রমগুলি এবং সেইজন্য স্ট্রিংগুলিতে কাজ করে:
var expression = "45+22"
expression = dropLast(expression) // "45+2"
// in Swift 2.0 (according to cromanelli's comment below)
expression = String(expression.characters.dropLast())
characters
expression = expression.characters.dropLast()
expression = String(expression.characters.dropLast())
স্ট্রিং হিসাবে ফিরে পেতে চাইলে সঠিকভাবে ফলাফল দিতে হবে
এটি একটি স্ট্রিং এক্সটেনশন ফর্ম:
extension String {
func removeCharsFromEnd(count_:Int) -> String {
let stringLength = count(self)
let substringIndex = (stringLength < count_) ? 0 : stringLength - count_
return self.substringToIndex(advance(self.startIndex, substringIndex))
}
}
১.২ এর আগে সুইফ্টের সংস্করণগুলির জন্য:
...
let stringLength = countElements(self)
...
ব্যবহার:
var str_1 = "Maxim"
println("output: \(str_1.removeCharsFromEnd(1))") // "Maxi"
println("output: \(str_1.removeCharsFromEnd(3))") // "Ma"
println("output: \(str_1.removeCharsFromEnd(8))") // ""
রেফারেন্স:
এক্সটেনশনগুলি বিদ্যমান শ্রেণি, কাঠামো বা গণনার ধরণের ক্ষেত্রে নতুন কার্যকারিতা যুক্ত করে। এর মধ্যে এমন প্রকারগুলি প্রসারিত করার ক্ষমতা অন্তর্ভুক্ত রয়েছে যার জন্য আপনার মূল উত্স কোডটিতে অ্যাক্সেস নেই (retroactive মডেলিং হিসাবে পরিচিত)। এক্সটেনশনগুলি উদ্দেশ্য-সি এর বিভাগগুলির মতো। (অবজেক্টিভ-সি বিভাগগুলির মতো, সুইফট এক্সটেনশনের নাম নেই not)
ডকস দেখুন
ফাংশনটি ব্যবহার করুন removeAtIndex(i: String.Index) -> Character
:
var s = "abc"
s.removeAtIndex(s.endIndex.predecessor()) // "ab"
স্ট্রিংয়ের শেষ চরিত্রটি ছাঁটাই করার সহজ উপায়:
title = title[title.startIndex ..< title.endIndex.advancedBy(-1)]
সুইফট 4
var welcome = "Hello World!"
welcome = String(welcome[..<welcome.index(before:welcome.endIndex)])
অথবা
welcome.remove(at: welcome.index(before: welcome.endIndex))
অথবা
welcome = String(welcome.dropLast())
var str = "Hello, playground"
extension String {
var stringByDeletingLastCharacter: String {
return dropLast(self)
}
}
println(str.stringByDeletingLastCharacter) // "Hello, playgroun"
পরিবর্তনকারী একটি সুইফ্ট বিভাগ:
extension String {
mutating func removeCharsFromEnd(removeCount:Int)
{
let stringLength = count(self)
let substringIndex = max(0, stringLength - removeCount)
self = self.substringToIndex(advance(self.startIndex, substringIndex))
}
}
ব্যবহার করুন:
var myString = "abcd"
myString.removeCharsFromEnd(2)
println(myString) // "ab"
সংক্ষিপ্ত উত্তর (2015-04-16 হিসাবে বৈধ): removeAtIndex(myString.endIndex.predecessor())
উদাহরণ:
var howToBeHappy = "Practice compassion, attention and gratitude. And smile!!"
howToBeHappy.removeAtIndex(howToBeHappy.endIndex.predecessor())
println(howToBeHappy)
// "Practice compassion, attention and gratitude. And smile!"
meta:
ভাষাটি তার দ্রুত বিবর্তন অব্যাহত রেখেছে, অনেক পূর্বের ভাল এসও উত্তরগুলির জন্য অর্ধ জীবন বিপজ্জনকভাবে সংক্ষিপ্ত করে তুলেছে। ভাষা শেখা এবং আসল ডকুমেন্টেশনগুলি উল্লেখ করা সর্বদা সেরা ।
নতুন সাবস্ট্রিং ধরণের ব্যবহারের সাথে:
var before: String = "Hello world!"
var lastCharIndex: Int = before.endIndex
var after:String = String(before[..<lastCharIndex])
print(after) // Hello world
খাটো উপায়:
var before: String = "Hello world!"
after = String(before[..<before.endIndex])
print(after) // Hello world
আপনি যে স্ট্রিংগুলি ব্যবহার করতে চান তার জন্য আমি এনএসএসস্ট্রিং ব্যবহার করার পরামর্শ দেব। আসলে এটিকে একজন বিকাশকারী হিসাবে ভাবতে আসুন আমি কখনই এনএসএসস্ট্রিংয়ের সাথে এমন কোনও সমস্যায় পড়িনি যা সুইফট স্ট্রিং সমাধান করবে ... আমি সূক্ষ্মতাগুলি বুঝতে পারি। তবে তাদের এখনও সত্যিকারের প্রয়োজন নেই।
var foo = someSwiftString as NSString
অথবা
var foo = "Foo" as NSString
অথবা
var foo: NSString = "blah"
এবং তারপরে সাধারণ এনএসএসস্ট্রিং স্ট্রিং অপারেশনগুলির পুরো বিশ্বটি আপনার জন্য উন্মুক্ত।
প্রশ্নের উত্তর হিসাবে
// check bounds before you do this, e.g. foo.length > 0
// Note shortFoo is of type NSString
var shortFoo = foo.substringToIndex(foo.length-1)
dropLast()
ফাংশন স্ট্রিং এর শেষ উপাদান সরিয়ে ফেলা হয়।
var expression = "45+22"
expression = expression.dropLast()
সুইফট 3 : আপনি যখন পেছনের স্ট্রিংটি সরাতে চান:
func replaceSuffix(_ suffix: String, replacement: String) -> String {
if hasSuffix(suffix) {
let sufsize = suffix.count < count ? -suffix.count : 0
let toIndex = index(endIndex, offsetBy: sufsize)
return substring(to: toIndex) + replacement
}
else
{
return self
}
}
সুইফট 4.2
আমি আইওএস অ্যাপ্লিকেশনটিতে স্ট্রিং (অর্থাত্ ইউআইএলবেল পাঠ্য ) থেকে আমার শেষ চরিত্রটিও মুছুন
@IBOutlet weak var labelText: UILabel! // Do Connection with UILabel
@IBAction func whenXButtonPress(_ sender: UIButton) { // Do Connection With X Button
labelText.text = String((labelText.text?.dropLast())!) // Delete the last caracter and assign it
}
import UIKit
var str1 = "Hello, playground"
str1.removeLast()
print(str1)
var str2 = "Hello, playground"
str2.removeLast(3)
print(str2)
var str3 = "Hello, playground"
str3.removeFirst(2)
print(str3)
Output:-
Hello, playgroun
Hello, playgro
llo, playground
উপরের কোডটির প্রশংসামূলক আমি স্ট্রিংয়ের শুরুটি সরাতে চেয়েছিলাম এবং কোথাও কোনও রেফারেন্স খুঁজে পাইনি। আমি এটি কীভাবে করেছি তা এখানে:
var mac = peripheral.identifier.description
let range = mac.startIndex..<mac.endIndex.advancedBy(-50)
mac.removeRange(range) // trim 17 characters from the beginning
let txPower = peripheral.advertisements.txPower?.description
এটি স্ট্রিংয়ের শুরু থেকে 17 টি অক্ষর ছাঁটাই করে দেয় (তার মোট স্ট্রিংয়ের দৈর্ঘ্য 67 টি শেষ থেকে আমরা অগ্রিম -50 এবং সেখানে আপনার এটি রয়েছে।