Как добавить символ в строку в Swift?

18

Это использовалось для работы в Xcode 6 Beta 5, теперь я получаю ошибку компиляции в бета-версии 6

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

Ошибка . Невозможно вызвать 'append' с типом аргумента 'Character'

    
задан samatron 23.08.2014 в 03:29
источник

7 ответов

23

Обновление для движущейся цели: Swift:

У Swift больше нет оператора +, который может принимать строку и массив символов. (Существует метод string appendContentsOf() , который может быть использован для этой цели).

Лучший способ сделать это сейчас - ответ Мартина R в комментарии ниже:

var newStr:String = str + String(aCharacter)

Оригинальный ответ: Это изменилось в бета-версии 6. Проверьте примечания к выпуску. Я все еще загружаю его, но попробуйте использовать:

var newStr:String = str + [aCharacter]
    
ответ дан Gary Makin 23.08.2014 в 03:41
источник
9

Это также работает

var newStr:String = str + String(aCharacter)
    
ответ дан baskInEminence 17.03.2015 в 20:00
источник
3

Другой возможный вариант:

var s: String = ""
var c: Character = "c"
s += "\(c)"
    
ответ дан hennes 16.08.2015 в 10:40
источник
3

append append(c: Character) Правильный метод, но ваш код имеет две другие проблемы.

Во-первых, чтобы перебрать символы строки, вы должны получить доступ к свойству String.characters .

Во-вторых, метод append не возвращает ничего, поэтому вы должны удалить newStr.

Затем код выглядит следующим образом:

for aCharacter : Character in aString.characters {
    var str:String = ""
    str.append(aCharacter)
    // ... do other stuff
}
    
ответ дан Mike Vosseller 16.08.2015 в 01:59
источник
1
var stringName: String = "samontro"
var characterNameLast: Character = "n"
stringName += String(characterNameLast) // You get your name "samontron"
    
ответ дан user3182143 16.08.2015 в 10:45
источник
0
 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!*
    
ответ дан Yogesh shelke 30.09.2015 в 07:55
источник
0

Мне нужно было получить инициалы от имени и фамилии и объединить их. Используя бит и куски приведенных выше ответов, это сработало для меня:

  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)
            }
    
ответ дан David DelMonte 08.10.2017 в 16:32
источник