Je souhaite remplacer tous les caractères A présents dans un tableau par 15 en utilisant Swift 3.

Exemple de tableau:

["4", "5", "6", "A", "A", "Q", "A"]

Résultat désiré:

["4", "5", "6", "15", "15", "Q", "15"]
-4
Neeraj Sonaro 27 nov. 2017 à 12:36

3 réponses

Meilleure réponse

map à la rescousse:

var a = ["4", "5", "6", "A", "A", "Q", "A"]
a = a.map({ $0 == "A" ? "15" : $0 })
print(a)// ["4", "5", "6", "15", "15", "Q", "15"]

MODIFIER: Après une capture d'écran d'erreur:

Vous avez un tableau de caractères et par conséquent le code ci-dessus ne fonctionne pas. N'oubliez pas non plus que "15" correspond à deux caractères et non à un caractère. Par conséquent, j'ai remplacé le caractère «A» par la chaîne «15» et l'ai mappé à un tableau de chaînes, à la place

let player1 = "456AAQA"
var player1Cards = Array(player1.characters) // ["4", "5", "6", "A", "A", "Q", "A"]

var player1CardsStrings = player1Cards.map{$0 == "A" ? "15" : String($0)}

player1CardsStrings // ["4", "5", "6", "15", "15", "Q", "15"]
2
Puneet Sharma 27 nov. 2017 à 10:12
 let values = ["4", "5", "6", "A", "A", "Q", "A"]
 let mappedvalues = values.map({ (value: String) -> String in
    if value != "A" {
       return value
    }
    return "15"
 })
0
rajtharan-g 27 nov. 2017 à 09:39

Testé sur Playground.

Parce que votre question manque d'informations que vous n'avez pas fournies au début, voici ce que vous pouvez faire.

"for loop": Vous itérez et remplacez la valeur si nécessaire. C'est une logique que vous pourriez appliquer à presque toutes les langues.

var array1 = ["4", "5", "6", "A", "A", "Q", "A"]
for index in 0 ... array1.count-1
{
    if array1[index] == "A"
    {
        array1[index] = "15"
    }
}
print("array1: \(array1)")

"pour chaque boucle": vous itérez et remplacez la valeur si nécessaire. C'est une logique que vous pourriez appliquer sur presque toutes les langues (peut-être moins de langues que la précédente)

var array2 = ["4", "5", "6", "A", "A", "Q", "A"]
for (index, object) in array2.enumerated()
{
    if object == "A"
    {
        array2[index] = "15"
    }
}
print("array2: \(array2)")

"map": l'itération "map" pour vous (voici la partie importante derrière la magie), vous vérifiez la valeur et remplacez la valeur si besoin. Les $0 représentent "l'élément actuel". Voici une spécificité.

var array3 = ["4", "5", "6", "A", "A", "Q", "A"]
array3 = array3.map({
    if $0 == "A"
    {
        return "15"
    }
    return $0
})
print("array3: \(array3)")

"map": l'itération "map" pour vous, vous vérifiez la valeur et remplacez la valeur si besoin par un test ternaire.

var array4 = ["4", "5", "6", "A", "A", "Q", "A"]
array4 = array4.map({$0 == "A" ? "15" : $0})
print("array4: \(array4)")

On m'a donné 4 façons (je pourrais aussi avoir plus explicite le map() avec une fermeture explicite, du plus simple au plus compliqué. Nous ne pouvons pas savoir si vous ne montrez pas vos tentatives où vous êtes bloqué. Est-ce une boucle for? Les algorithmes de base? Les utilisateurs avancés de Swift sont peut-être plus friands du dernier, mais pour les débutants, c'est assez complexe et "magique". Alors, quand ils veulent le changer un peu pour un test différent, ils ne savent jamais quoi faire.

Note latérale: je ne suis pas un développeur Swift, plutôt un Objective-C, donc il manque peut-être de vérifications. Cette réponse est de montrer différentes approches, comment vous passez d'un code "verbeux" à un code moins "verbeux", mais que vous devez quand même maîtriser. Même si vous avez un problème avec map(), vous pouvez le «contourner» et le faire manuellement.

1
Larme 27 nov. 2017 à 09:58
47507735