【问题标题】:How to convert String Array to String in Swift如何在 Swift 中将字符串数组转换为字符串
【发布时间】:2019-02-17 00:08:45
【问题描述】:

我需要将String 数组转换为单个String

这是我的数组:

["1","2","3","4","5"]

我需要得到这个:

"["1","2","3","4","5"]"

【问题讨论】:

  • 这不是完全重复的。
  • 我已经看到了这个问题你的链接提供了没有数组的答案我想要数组请看一下
  • 在封闭的双引号内,需要对双引号进行转义。因此,您的 "["1","2","3","4","5"]" 在任何可能的用例中都不能是有效的字符串。你想要一个字符串做什么?

标签: arrays swift


【解决方案1】:

这应该可行。

let string = ["1","2","3","4","5"]

let newString = "\"[\"" + string.joined(separator: "\",\"") + "\"]\""

print(newString) // Prints "["1","2","3","4","5"]"

编辑:最好的方法是使用@vadian 的答案。不过,这似乎不是一个有效的用例。

【讨论】:

  • 得到相同的数组 ["1","2","3","4","5"]
  • @Jhony 但作为单个字符串。你想让字符串也用双引号括起来吗?
  • 这是一个可怕的 hack,你应该告诉 OP 使用正确的工具
  • @Jhony 请删除已接受的标记并将 vadian 的答案标记为已接受。您只需要在该答案的两侧附加引号即可获得所需的内容。我的回答是没有错,但不是解决问题的方法。
  • @RakeshaShastri 用debugDescription 打印的字符串正是问题中的预期字符串(除了必要的虚拟添加的反斜杠)。
【解决方案2】:
func objectToJSONString(dictionaryOrArray: Any) -> String? {
do {
    
    //Convert to Data
    let jsonData = try JSONSerialization.data(withJSONObject: dictionaryOrArray, options: JSONSerialization.WritingOptions.prettyPrinted)
    
    //Convert back to string. Usually only do this for debugging
    if let JSONString = String(data: jsonData, encoding: String.Encoding.utf8) {
        return JSONString
    }
    
} catch {
    print(error.localizedDescription)
}

return nil
}

输出将是

编辑以获得准确答案

为字符串声明一个字符串扩展

extension String {
var unescaped: String {
    let entities = ["\0": "\\0",
                    "\t": "\\t",
                    "\n": "\\n",
                    "\r": "\\r",
                    "\"": "\\\"",
                    "\'": "\\'",
                    ]
    
    return entities
        .reduce(self) { (string, entity) in
            string.replacingOccurrences(of: entity.value, with: entity.key)
        }
        .replacingOccurrences(of: "\\\\(?!\\\\)", with: "", options: .regularExpression)
        .replacingOccurrences(of: "\\\\", with: "\\")
}
}

修改后的代码将是

let array = ["1","2","3","4","5"]

let jsonString = objectToJSONString(dictionaryOrArray: array)

print(jsonString!.debugDescription) // this will print "[\"1\",\"2\",\"3\",\"4\",\"5\"]"

let result = jsonString!.debugDescription.unescaped

print(result)

所以输出

快乐编码:)

【讨论】:

  • 这是 OP 正在寻找但他还不知道的东西
  • 我没有得到。 OP?
  • 原创海报
  • @vadian 回答它对于 Swift 4 或更高版本也是正确的
  • 哦!现在就看OP了。
【解决方案3】:

如果你想从["1","2","3","4","5"]"["1","2","3","4","5"]" 然后检查

你可以用简单的方法做到这一点,请试试这个

 let arr = ["1","2","3","4","5"]
 let str = "\"\(arr)\""

【讨论】:

  • 不幸的是,这会在元素之间引入额外的空间。
  • @RakeshaShastri:在控制台上打印然后给我看。
  • 我相信你自己可以做到。
  • @RakeshaShastri 现在检查
  • facepalm 叹息
【解决方案4】:

为 swift 4 试试这个代码

 override func viewDidLoad() {
        super.viewDidLoad()

        let strArray = self.getString(array: ["1", "2", "3"])
        print(strArray)

        // Do any additional setup after loading the view, typically from a nib.
    }

    func getString(array : [String]) -> String {
        let stringArray = array.map{ String($0) }
        return stringArray.joined(separator: ",")
    }

【讨论】:

    【解决方案5】:

    您可以使用此将数组转换为 CSV 字符串。

    let productIDArray = ["1","2","3","4","5"]
    let productIDString = productIDArray.joined(separator: ",")
    

    【讨论】:

      【解决方案6】:
      extension Array {
      
          var fancyString: String {
              let formatted = self.description.replacingOccurrences(of: " ", with: "")
              return "\"\(formatted)\""
          }
      }
      
      let array = ["1", "2", "3", "4", "5"]
      print(array.fancyString) //"["1","2","3","4","5"]"
      

      注意:此解决方案适用于任何类型的 Arrays

      let ints = [1, 1, 3, 5, 8]
      print(ints.fancyString) // "[1,1,3,5,8]"
      

      【讨论】:

        【解决方案7】:

        结果是一个 JSON 字符串,所以使用JSONEncoder

        let array =  ["1","2","3","4","5"]
        do {
            let data = try JSONEncoder().encode(array)
            let string = String(data: data, encoding: .utf8)!
            print(string.debugDescription) // "[\"1\",\"2\",\"3\",\"4\",\"5\"]"
        } catch { print(error) }
        

        【讨论】:

        • getting ["1","2","3","4","5"] 我想要这个数组在引用的 ""
        • 在双引号中,相信我。请参阅编辑后的答案。
        猜你喜欢
        • 2016-07-13
        • 2015-04-16
        • 2016-11-20
        • 1970-01-01
        • 2014-11-07
        • 1970-01-01
        • 2015-10-11
        相关资源
        最近更新 更多