2014-12-01 14 views
16

में स्ट्रिंग ऑब्जेक्ट में विशिष्ट वर्ण के बाद सभी वर्णों को हटाने का और अधिक शानदार तरीका क्या है स्विफ्ट में String ऑब्जेक्ट में विशिष्ट वर्ण के बाद सभी वर्णों को निकालने का और अधिक शानदार तरीका क्या है?स्विफ्ट

मान लीजिए मैं निम्नलिखित स्ट्रिंग है कि:

str.str

और मैं इसे से ".str" को दूर करने की जरूरत है। मैं यह कैसे कर सकता हूं?

अग्रिम धन्यवाद।

उत्तर

23

यहाँ यह करने के लिए एक तरीका है:

var str = "str.str" 

if let dotRange = str.rangeOfString(".") { 
    str.removeRange(dotRange.startIndex..<str.endIndex) 
} 

अद्यतन स्विफ्ट 3 में यह है:

var str = "str.str" 

if let dotRange = str.range(of: ".") { 
    str.removeSubrange(dotRange.lowerBound..<str.endIndex) 
} 
+1

स्विफ्ट 3: अगर dotRange = str.range (का: "।") { str.removeSubrange (dotRange.lowerBound .. d00dle

6

काफी एक कॉम्पैक्ट तरीका होगा:

var str = "str.str" 
str = str.componentsSeparatedByString(".")[0] 

एक अन्य विकल्प जिसमें आप रुचि रखते हैं, जो आपके उदाहरण के लिए काम करता है 'Str.str' लेकिन आपके विनिर्देशन फिट नहीं करता है:

str = str.stringByDeletingPathExtension 
// Returns a new string made by deleting the extension (if any, and only the last) 
// from the `String` 
6

मुझे लगता है कि यह बेहतर तरीका है:

साथ अद्यतन स्विफ्ट 4: (सबस्ट्रिंग अब पदावनत किया जाता है)

let smth = "element=value" 

if let index = (smth.range(of: "=")?.upperBound) 
{ 
    //prints "value" 
    let afterEqualsTo = String(smth.suffix(from: index)) 

    //prints "element=" 
    let beforeEqualsToContainingSymbol = String(smth.prefix(upTo: index)) 
} 

if let index = (smth.range(of: "=")?.lowerBound) 
{ 
    //prints "=value" 
    let afterEqualsToContainingSymbol = String(smth.suffix(from: index)) 

    //prints "element" 
    let beforeEqualsTo = String(smth.prefix(upTo: index)) 
}