这个在 Xcode 6: Beta 5 上能正常工作,但是在 Beta 6 中编译时会出现错误。
for aCharacter: Character in aString {
var str: String = ""
var newStr: String = str.append(aCharacter) // ERROR
...
}
错误: 无法使用类型为Character
的参数调用append
针对不断变化的Swift技术,更新如下:
Swift不再有一个可以接收字符串和字符数组的+运算符。(可以使用字符串方法appendContentsOf()
来达到这个目的)。
现在做这件事的最好方式是马丁R在下面评论中提供的答案:
var newStr:String = str + String(aCharacter)
原始回答:这在 Beta 6 中有所改变。请查看发布说明。我仍在下载中,但尝试使用:
var newStr:String = str + [aCharacter]
var newStr:String = str + String(aCharacter)
同样有效。 - Martin R'String'不等于'Uint8'
。我猜最新的官方版本与Gary使用的beta版本不同。因此,正确的答案似乎是Martin R的答案。 - qwerty_so这也可以工作
var newStr:String = str + String(aCharacter)
append(c: Character)
是正确的方法,但您的代码存在两个问题。
第一个问题是,要迭代字符串的字符,必须访问 String.characters
属性。
第二个问题是,append 方法不返回任何内容,因此应删除 newStr。
代码如下:
for aCharacter : Character in aString.characters {
var str:String = ""
str.append(aCharacter)
// ... do other stuff
}
var s: String = ""
var c: Character = "c"
s += "\(c)"
var welcome = "hello there"
let exclamationMark: Character = "!"
welcome.append(exclamationMark)
// welcome now equals "hello there!"
var stringName: String = "samontro"
var characterNameLast: Character = "n"
stringName += String(characterNameLast) // You get your name "samontron"
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)
}
对于那些寻找 Swift 5 的人,你可以使用插值。
var content = "some random string"
content = "\(content)!!"
print(content) // Output: some random string!!
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!*
append
返回Void
并且只会改变字符串本身。 - Qbyte