web-dev-qa-db-fra.com

Comment ajouter un caractère à une chaîne dans Swift?

Cela fonctionnait dans Xcode 6 Beta 5 maintenant je reçois une erreur de compilation dans Beta 6

for aCharacter : Character in aString {
    var str:String = ""
    var newStr:String = str.append(aCharacter) // ERROR
    ....
}

Erreur : Impossible d'appeler append avec un type d'argument Character

25
samatron

Mise à jour pour la cible mobile qui est Swift:

Swift n'a plus d'opérateur + pouvant prendre une chaîne et un tableau de caractères. (Il existe une méthode de chaîne appendContentsOf() pouvant être utilisée à cette fin).

La meilleure façon de procéder est la réponse de Martin R dans un commentaire ci-dessous:

var newStr:String = str + String(aCharacter)

Réponse originale: Cela a changé dans la version bêta 6. Vérifiez les notes de publication.

var newStr:String = str + [aCharacter]
30
Gary Makin

Cela fonctionne aussi

var newStr:String = str + String(aCharacter)
11
baskInEminence

ajoute append(c: Character) IS à la bonne méthode mais votre code a deux autres problèmes.

La première est que pour parcourir les caractères d'une chaîne, vous devez accéder à la propriété String.characters.

La seconde est que la méthode append ne renvoie rien, vous devez donc supprimer le newStr.

Le code ressemble alors à ceci:

for aCharacter : Character in aString.characters {
    var str:String = ""
    str.append(aCharacter)
    // ... do other stuff
}
4
Mike Vosseller

Une autre option possible est

var s: String = ""
var c: Character = "c"
s += "\(c)"
4
hennes
var stringName: String = "samontro"
var characterNameLast: Character = "n"
stringName += String(characterNameLast) // You get your name "samontron"
1
user3182143

Selon Documentation Swift 4 , Vous pouvez ajouter une valeur de caractère à une variable String avec la méthode append () du type String:

var welcome = "hello there"

let exclamationMark: Character = "!"
welcome.append(exclamationMark)
// welcome now equals "hello there!"
0
Shailendra Suriyal

Je devais obtenir les initiales du prénom et du nom de famille et les joindre. En utilisant des morceaux des réponses ci-dessus, cela a fonctionné pour moi:

  var initial: String = ""

            if !givenName.isEmpty {
                let char = (givenName as NSString).substring(with: NSMakeRange(0, 1))
               let str = String(char)
                initial.append(str)
            }

            if !familyName.isEmpty {
                 let char = (familyName as NSString).substring(with: NSMakeRange(0, 1))
                let str = String(char)
                initial.append(str)
            }
0
David DelMonte
 let original:String = "Hello"
 var firstCha = original[original.startIndex...original.startIndex]

 var str = "123456789"
 let x = (str as NSString).substringWithRange(NSMakeRange(0, 4))

 var appendString1 = "\(firstCha)\(x)" as String!
 // final name
 var namestr = "yogesh"
 var appendString2 = "\(namestr) (\(appendString1))" as String!*
0
Yogesh shelke