【问题标题】:How to append a character to a string in Swift?如何在 Swift 中将字符附加到字符串?
【发布时间】:2021-09-23 15:18:07
【问题描述】:

这曾经在 Xcode 6: Beta 5 中工作。现在我在 Beta 6 中遇到编译错误。

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

错误:无法使用Character 类型的参数调用append

【问题讨论】:

  • 是的。那是我使用的原始语法并给出了这个错误:不能使用类型为“(字符,@lvalue 字符串)”的参数列表调用“+”
  • append 返回Void 并且只改变字符串。

标签: swift string


【解决方案1】:

对 Swift 的移动目标进行更新:

Swift 不再有可以接受字符串和字符数组的 + 运算符。 (有一个字符串方法appendContentsOf()可以用于此目的)。

现在最好的方法是 Martin R 在下面的评论中的回答:

var newStr:String = str + String(aCharacter)

原答案: 这在 Beta 6 中发生了变化。请查看发行说明。我仍在下载它,但请尝试使用:

var newStr:String = str + [aCharacter]

【讨论】:

  • 感谢工作。我想我想推断一个字符数组是一个字符串? Beta 6 的发行说明中未提及此特定语法。
  • 它本来可以更清楚,但它确实说“您仍然可以 + 两个字符或带有任何其他字符序列的字符串或带有任何其他相同元素类型序列的数组。”从此,我决定用 [] 语法将字符变成一个数组。
  • var newStr:String = str + String(aCharacter) 也可以。
  • 以上答案返回'String' is not identical to 'Uint8'。我猜最新的官方版本与 Gary 使用的 beta 不同。所以正确的答案似乎是 Martin R.
  • 我不确定你在做什么才能得到'String' is not identical to 'Uint8',但我同意马丁的回答在更多情况下是正确的。
【解决方案2】:

这也有效

var newStr:String = str + String(aCharacter)

【讨论】:

  • ...我会说这是“更快捷”的方式。
【解决方案3】:

追加append(c: Character) 是正确的方法,但您的代码还有另外两个问题。

首先,要遍历字符串的字符,您必须访问String.characters 属性。

第二个是append方法没有返回任何东西,所以你应该删除newStr。

代码如下所示:

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

【讨论】:

  • 对,只是像 OP 一样设置一个循环。添加了做其他事情的评论
【解决方案4】:

另一个可能的选择是

var s: String = ""
var c: Character = "c"
s += "\(c)"

【讨论】:

    【解决方案5】:
    var stringName: String = "samontro"
    var characterNameLast: Character = "n"
    stringName += String(characterNameLast) // You get your name "samontron"
    

    【讨论】:

      【解决方案6】:

      根据Swift 4 Documentation, 您可以使用 String 类型的 append() 方法将 Character 值附加到 String 变量:

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

      【讨论】:

        【解决方案7】:

        我必须从名字和姓氏中获取首字母,并将它们连接在一起。使用上述答案的点点滴滴,这对我有用:

          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)
                    }
        

        【讨论】:

          【解决方案8】:

          对于那些寻找 swift 5 的人,您可以进行插值。

          var content = "some random string"
          content = "\(content)!!"
          print(content) // Output: some random string!!
          

          【讨论】:

            【解决方案9】:
             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!*
            

            【讨论】:

              猜你喜欢
              • 2014-11-19
              • 1970-01-01
              • 2016-03-02
              • 2012-01-12
              • 2015-10-17
              • 1970-01-01
              • 2019-02-13
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多