【问题标题】:Concatenate String in Swift在 Swift 中连接字符串
【发布时间】:2014-10-27 08:09:44
【问题描述】:

我有一个包含字符串的数组,即数组

我尝试连接字符串,但由于“字符串与 UInt8 不同”出现错误

var titleString:String! = ""

 for title in array {
        titleString += "\(title)"
 }

【问题讨论】:

  • 你为什么把这个字符串设为可选?
  • 搞错了。我编辑了我的问题
  • 它不起作用,因为您将 titleAnswer 声明为隐式展开的可选。现在您已经变成了非可选的,它应该可以工作 - 请参阅下面的答案(还有一种更好的连接方式)
  • 您的代码(编辑后)是否真的产生了该错误消息?否则你的问题不清楚。
  • @MartinR:你说得对。我在连接操作后得到空字符串。

标签: ios iphone swift ios8


【解决方案1】:

要连接字符串数组的所有元素,可以使用reduce 方法:

var string = ["this", "is", "a", "string"]

let res = string.reduce("") { $0 + $1 }

第一个参数是初始字符串,为空,第二个参数是闭包,对数组中的每个元素执行。闭包接收 2 个参数:上一步返回的值(或初始值,如果是第一个元素),以及当前元素值。

更多信息here

附录我忘了明确回答您的问题:连接不起作用,因为您将 titleString 声明为可选 - 只需转换为非可选变量即可。如果你仍然想使用可选的,那么在做赋值时使用强制解包:

titleString! += "\(title)"

附录 2 正如@MartinR 所建议的,还有另一种更简单的连接方法:

join("", string)

【讨论】:

  • 感谢您的解释。有用。我刚刚开始学习swift。我不熟悉可选链。会深入研究。
  • 还有一个问题。我想在一个单元格中以多行显示字符串数组。我怎样才能做到这一点。你能指导我吗?
  • 这比仅仅连接一个字符串数组更复杂。我建议搜索一个很好的教程,raywenderlich.com 和 appcoda.com 有很好的
  • 我想将“\n”附加到字符串并在uilabel中显示。
  • @Antonio,您的解决方案可以进一步简化为:let res = string.reduce("", +)
【解决方案2】:

在 Swift 3 中,这是连接字符串数组元素的方式:

 ["this", "is", "a", "string"].joined(separator: "")

虽然,joined(separator:) 确实适合在字符串之间放置分隔符。 Reduce 还是更简洁:

 ["this", "is", "a", "string"].reduce("", +)

【讨论】:

    猜你喜欢
    • 2014-07-24
    • 1970-01-01
    • 2015-11-26
    • 2016-08-30
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多