28 votes

Conversion de String en Int et remplacement de la virgule par le signe Plus

En utilisant Swift, j'essaie de prendre une liste de nombres saisis dans une vue texte dans une application et de créer une somme de cette liste en extrayant chaque nombre pour une calculatrice de notes. De plus, la quantité de valeurs entrées par l'utilisateur change à chaque fois. Un exemple est montré ci-dessous :

String of : 98,99,97,96... Essayer d'obtenir : 98+99+97+96...

Aidez-nous ! Merci

61voto

vacawama Points 91151
  1. Utilisez components(separatedBy:) pour décomposer la chaîne de caractères séparée par des virgules.
  2. Utilisez trimmingCharacters(in:) pour supprimer les espaces avant et après chaque élément
  3. Utilisez Int() pour convertir chaque élément en un nombre entier.
  4. Utilisez compactMap (précédemment appelé flatMap ) pour supprimer tous les éléments qui ne pouvaient pas être convertis en Int .
  5. Utilisez reduce pour résumer le tableau des Int .

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

29voto

David Seek Points 8499

Pour Swift 3 et Swift 4 .

C'est simple : Codé en dur. Seulement utile si vous connaissez le nombre exact d'entiers à venir, qui veulent être calculés et imprimés/utilisés par la suite.

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)

Façon fantaisie comme fonction : Voie générique. Ici, vous pouvez mettre autant de cordes que vous le souhaitez à la fin. Vous pourriez, par exemple, rassembler d'abord toutes les chaînes de caractères, puis utiliser le tableau pour les faire calculer.

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)

5voto

neha Points 248

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X