बस पिछड़े तक पहुंच रही है
सबसे अच्छा तरीका संपत्ति और वैश्विक फ़ंक्शन के लिए substringToIndex
संयुक्त का उपयोग करना है।endIndex
advance
var string1 = "www.stackoverflow.com"
var index1 = advance(string1.endIndex, -4)
var substring1 = string1.substringToIndex(index1)
पीछे से शुरू होने वाली स्ट्रिंग की तलाश है
का उपयोग करें rangeOfString
और करने के options
लिए सेट करें.BackwardsSearch
var string2 = "www.stackoverflow.com"
var index2 = string2.rangeOfString(".", options: .BackwardsSearch)?.startIndex
var substring2 = string2.substringToIndex(index2!)
कोई एक्सटेंशन नहीं, शुद्ध मुहावरेदार स्विफ्ट
स्विफ्ट 2.0
advance
अब का एक हिस्सा है Index
और कहा जाता है advancedBy
। आप इसे पसंद करते हैं:
var string1 = "www.stackoverflow.com"
var index1 = string1.endIndex.advancedBy(-4)
var substring1 = string1.substringToIndex(index1)
स्विफ्ट 3.0
आप कॉल नहीं कर सकते हैं advancedBy
पर एक String
है क्योंकि यह चर आकार तत्व है। आपको उपयोग करना होगा index(_, offsetBy:)
।
var string1 = "www.stackoverflow.com"
var index1 = string1.index(string1.endIndex, offsetBy: -4)
var substring1 = string1.substring(to: index1)
बहुत सारी चीजों का नाम बदल दिया गया है। मामले कैमलकेस में लिखे startIndex
गए , बन गए lowerBound
।
var string2 = "www.stackoverflow.com"
var index2 = string2.range(of: ".", options: .backwards)?.lowerBound
var substring2 = string2.substring(to: index2!)
इसके अलावा, मैं बल प्रयोग की सिफारिश नहीं करेंगे index2
। आप वैकल्पिक बंधन का उपयोग कर सकते हैं या map
। व्यक्तिगत रूप से, मैं उपयोग करना पसंद करता हूं map
:
var substring3 = index2.map(string2.substring(to:))
स्विफ्ट 4
स्विफ्ट 3 संस्करण अभी भी मान्य है लेकिन अब आप अनुक्रमणिका श्रेणियों के साथ सदस्यता का उपयोग कर सकते हैं:
let string1 = "www.stackoverflow.com"
let index1 = string1.index(string1.endIndex, offsetBy: -4)
let substring1 = string1[..<index1]
दूसरा दृष्टिकोण अपरिवर्तित रहता है:
let string2 = "www.stackoverflow.com"
let index2 = string2.range(of: ".", options: .backwards)?.lowerBound
let substring3 = index2.map(string2.substring(to:))