Подтвердить что ты не робот

String to Int в Swift 3.0

Используя Swift, я пытаюсь взять список чисел, вводимых в текстовое представление в приложении, и создать сумму этого списка, извлекая каждый номер для калькулятора классов. Также каждый раз изменяется количество значений, вводимых пользователем. Пример показан ниже:

Строка: 98,99,97,96... Попытка получить: 98 + 99 + 97 + 96...

Пожалуйста, помогите! Благодаря

4b9b3361

Ответ 1

  • Используйте components(separatedBy:), чтобы разбить строку, разделенную запятыми.
  • Используйте trimmingCharacters(in:) для удаления пробелов до и после каждого элемента
  • Используйте Int() для преобразования каждого элемента в целое число.
  • Используйте flatMap для удаления любых элементов, которые не могут быть преобразованы в Int.
  • Используйте reduce для суммирования массива Int.

    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
    

Ответ 2

Для Swift 3 и Swift 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)

Ответ 3

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