2016-12-25 9 views
5
subscript (r: Range<Int>) -> String { 
     let start = startIndex.advancedBy(r.startIndex) 
     let end = start.advancedBy(r.endIndex - r.startIndex) 
     return self[Range(start: start, end: end)] 
    } 

को स्ट्रिंग विस्तार परिवर्तित तेज 3. करने के लिए अपने स्ट्रिंग विस्तार में ऊपर सबस्क्रिप्ट कन्वर्ट करने के लिए संघर्ष नीचे के बाद मैं Xcode पर परिवर्तित बटन दबाया हुआ।त्रुटि: स्रोत फ़ाइल में संपादक प्लेसहोल्डर, जब तेजी से 3

 subscript (r: Range<Int>) -> String { 
      let start = characters.index(startIndex, offsetBy: r.lowerBound) 
      let end = <#T##String.CharacterView corresponding to `start`##String.CharacterView#>.index(start, offsetBy: r.upperBound - r.lowerBound) 
      return self[(start ..< end)] 
     } 

त्रुटि के Screenshot

+0

http://stackoverflow.com/questions/24092884/get-nth-character-of-a-string-in-swift-programming-language स्विफ्ट 1, 2, 3 –

उत्तर

4

तुम सब करने की ज़रूरत सूचकांक के सामने characters जोड़ना है। शिकायतकर्ता आपको String.CharacterView corresponding to##String.CharacterView शुरू करने का संकेत भी देता है। संदेश शायद थोड़ा अस्पष्ट है, लेकिन इसमें बहुत बढ़िया मूल्य है! आपको बताता है, वह पात्रों की एक सरणी की उम्मीद कर रहा है। हालांकि, जैसा कि @ वैडियन सुझाव देता है, आप शुरुआत से characters को भी छोड़ सकते हैं।

मैंने यह सुनिश्चित करने के लिए थोड़ा परीक्षण भी लिखा है।

import Foundation 

extension String { 
    subscript (r: Range<Int>) -> String { 
     let start = index(startIndex, offsetBy: r.lowerBound) 
     let end = index(start, offsetBy: r.upperBound - r.lowerBound) 
     return self[start..<end] 
    } 
} 

let string = "Hello world" 
let range = Range(uncheckedBounds: (lower: 0, upper: 2)) 
let s = string[range] // prints "He" 
+0

के लिए स्ट्रिंग subscripting तरीकों है आप दोनों पंक्तियों में 'अक्षर' भी छोड़ सकते हैं। – vadian

+0

@vadian धन्यवाद, मेरा जवाब संपादित किया। – dirtydanee

+0

@dirtydanee आप पूर्ण किंवदंती! –

संबंधित मुद्दे