web-dev-qa-db-de.com

Wie füge ich ein Zeichen in Swift an eine Zeichenkette an?

Früher funktionierte dies in Xcode 6 Beta 5, jetzt bekomme ich Kompilierungsfehler in Beta 6

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

Fehler : append kann nicht mit einem Argumenttyp Character aufgerufen werden

25
samatron

Update für das sich bewegende Ziel, das schnell ist:

Swift hat keinen Operator + mehr, der einen String und ein Array von Zeichen aufnehmen kann. (Es gibt eine String-Methode appendContentsOf(), die zu diesem Zweck verwendet werden kann).

Die beste Möglichkeit, dies jetzt zu tun, ist die Antwort von Martin R in einem Kommentar:

var newStr:String = str + String(aCharacter)

Ursprüngliche Antwort: Dies wurde in Beta 6 geändert. Überprüfen Sie die Versionshinweise. Ich lade es immer noch herunter, aber versuchen Sie es mit:

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

Das funktioniert auch

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

fügen Sie append(c: Character) IS die richtige Methode hinzu, Ihr Code weist jedoch zwei weitere Probleme auf.

Die erste besteht darin, dass Sie auf die String.characters-Eigenschaft zugreifen müssen, um die Zeichen einer Zeichenfolge zu durchlaufen.

Die zweite ist, dass die Append-Methode nichts zurückgibt, also sollten Sie den newStr entfernen.

Der Code sieht dann so aus:

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

Eine weitere mögliche Option ist

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

Gemäß Swift 4 Documentation , Sie können einen Zeichenwert an eine String-Variable mit der Methode append () des String-Typs anhängen:

var welcome = "hello there"

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

Ich musste Initialen von Vor- und Nachnamen bekommen und sie zusammenfügen. Mit Hilfe von Teilen der obigen Antworten funktionierte dies für mich:

  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