2016-10-15 8 views
25

स्विफ्ट का उपयोग करके, मैं ऐप में टेक्स्ट व्यू में नंबर इनपुट की एक सूची लेने की कोशिश कर रहा हूं और ग्रेड कैलक्यूलेटर के लिए प्रत्येक नंबर निकालने के द्वारा इस सूची का योग बना रहा हूं। उपयोगकर्ता द्वारा रखे गए मूल्यों की मात्रा हर बार बदलती है। एक उदाहरण नीचे दिखाया गया है:स्ट्रिंग इंट में कनवर्ट करें और कॉमा को प्लस साइन

की स्ट्रिंग: 98 + 99 + 97 + 96 ...

कृपया मदद: 98,99,97,96 ... पाने के लिए कोशिश कर रहा है! धन्यवाद

उत्तर

54
  1. उपयोग components(separatedBy:) अल्पविराम से अलग स्ट्रिंग को तोड़ने के लिए।
  2. उपयोग trimmingCharacters(in:) से पहले और प्रत्येक तत्व के बाद
  3. उपयोग Int() रिक्त स्थान को हटाने के लिए एक पूर्णांक में प्रत्येक तत्व कन्वर्ट करने के लिए।
  4. में परिवर्तित नहीं किए जा सकने वाले किसी भी आइटम को हटाने के लिए flatMap का उपयोग करें।
  5. Int की सरणी को समेटने के लिए reduce का उपयोग करें।

    let input = " 98 ,99 , 97, 96 " 
    
    let values = input.components(separatedBy: ",").flatMap { Int($0.trimmingCharacters(in: .whitespaces)) } 
    let sum = values.reduce(0, +) 
    print(sum) // 390 
    
29

के लिए स्विफ्ट 3 और स्विफ्ट 4

सरल तरीका: हार्ड कोडित। केवल उपयोगी अगर आप सटीक मात्रा में आने वाले पूर्णांक को जानते हैं, तो गणना करना और मुद्रित/आगे बढ़ना चाहते हैं।

let string98: String = "98" 
let string99: String = "99" 
let string100: String = "100" 
let string101: String = "101" 

let int98: Int = Int(string98)! 
let int99: Int = Int(string99)! 
let int100: Int = Int(string100)! 
let int101: Int = Int(string101)! 

// optional chaining (if or guard) instead of "!" recommended. therefore option b is better 

let finalInt: Int = int98 + int99 + int100 + int101 
एक समारोह के रूप

print(finalInt) // prints Optional(398) (optional)

फैंसी तरीका: जेनेरिक रास्ता। यहां आप अंत में आवश्यकतानुसार कई तार डाल सकते हैं। उदाहरण के लिए, आप पहले सभी तारों को इकट्ठा कर सकते हैं और फिर उन्हें गणना करने के लिए सरणी का उपयोग कर सकते हैं।

func getCalculatedIntegerFrom(strings: [String]) -> Int { 

    var result = Int() 

    for element in strings { 

     guard let int = Int(element) else { 
      break // or return nil 
      // break instead of return, returns Integer of all 
      // the values it was able to turn into Integer 
      // so even if there is a String f.e. "123S", it would 
      // still return an Integer instead of nil 
      // if you want to use return, you have to set "-> Int?" as optional 
     } 

     result = result + int 

    } 

    return result 

} 

let arrayOfStrings = ["98", "99", "100", "101"] 

let result = getCalculatedIntegerFrom(strings: arrayOfStrings) 

print(result) // prints 398 (non-optional)

5

let myString = "556" let myInt = Int(myString)

+1

कैसे अपने कोड काम करता है के लिए एक स्पष्टीकरण जोड़ें। – brimstone

+0

और यह मेरे उत्तर के लिए कैसे अलग है? –

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