You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 5:将API响应转为数组(拼接)及移除数组元素间的@

嘿,我来帮你解决这两个Swift 5的问题,直接上实用方案:

1. Swift 5中API响应转数组并完成拼接操作

首先得明确API响应的常见格式——一般是JSON数据,下面分解析和拼接两个环节说明:

步骤1:将API响应解析为数组

场景1:解析为字符串数组

如果API返回的是类似 ["file1.pdf", "file2.jpg"] 的JSON数组,用Swift原生的Codable解析最便捷:

// 假设你已经通过URLSession获取到API返回的data
do {
    let stringArray = try JSONDecoder().decode([String].self, from: apiResponseData)
    print("解析后的数组:\(stringArray)")
} catch {
    print("解析失败:\(error.localizedDescription)")
}

场景2:解析为自定义模型数组

如果API返回的是结构化数据数组(比如文件信息集合),先定义对应模型再解析:

struct FileInfo: Codable {
    let fileName: String
    let fileUrl: String
}

// 解析代码
do {
    let fileArray = try JSONDecoder().decode([FileInfo].self, from: apiResponseData)
    print("解析后的文件数组:\(fileArray)")
} catch {
    print("解析失败:\(error.localizedDescription)")
}

步骤2:数组拼接操作

这里分两种常见需求:

  • 数组合并:把多个数组合并为一个新数组
let array1 = ["doc1.pdf", "img1.jpg"]
let array2 = ["doc2.pdf", "img2.png"]
let combinedArray = array1 + array2
// 结果:["doc1.pdf", "img1.jpg", "doc2.pdf", "img2.png"]
  • 数组元素拼接为字符串:将数组元素按需求拼接成单个字符串
let fileArray = ["/email5600@gmail.com_conemp.pdf", "uploadedFiles/email5600@gmail.com_p3037c.pdf"]
// 无分隔符直接拼接
let joinedString = fileArray.joined()
// 结果:"/email5600@gmail.com_conemp.pdfuploadedFiles/email5600@gmail.com_p3037c.pdf"

// 用自定义分隔符拼接(比如逗号)
let joinedWithComma = fileArray.joined(separator: ", ")
// 结果:"/email5600@gmail.com_conemp.pdf, uploadedFiles/email5600@gmail.com_p3037c.pdf"

2. 移除指定字符串中数组元素间的@分隔符

你给出的字符串是:"/email5600@gmail.com_conemp.pdf,@,uploadedFiles/email5600@gmail.com_p3037c.pdf,@,profilepics/mj.tm@hotmail.com.jpeg",这里的元素分隔符是",@,"(注意前后的逗号),下面分场景处理:

场景1:分割为纯净元素数组(保留元素内的@)

let originalString = "/email5600@gmail.com_conemp.pdf,@,uploadedFiles/email5600@gmail.com_p3037c.pdf,@,profilepics/mj.tm@hotmail.com.jpeg"
// 按",@,"分割成数组,元素内的邮箱@会被保留
let fileArray = originalString.components(separatedBy: ",@,")
// 结果数组:
// ["/email5600@gmail.com_conemp.pdf", "uploadedFiles/email5600@gmail.com_p3037c.pdf", "profilepics/mj.tm@hotmail.com.jpeg"]

场景2:直接移除分隔符得到拼接字符串

如果不需要数组,直接替换掉所有",@,"分隔符:

let cleanedString = originalString.replacingOccurrences(of: ",@,", with: "")
// 结果:
// "/email5600@gmail.com_conemp.pdfuploadedFiles/email5600@gmail.com_p3037c.pdfprofilepics/mj.tm@hotmail.com.jpeg"

场景3:分割后用其他分隔符重新拼接

比如用逗号替换原有的",@,":

let joinedString = fileArray.joined(separator: ", ")
// 结果:
// "/email5600@gmail.com_conemp.pdf, uploadedFiles/email5600@gmail.com_p3037c.pdf, profilepics/mj.tm@hotmail.com.jpeg"

内容的提问来源于stack exchange,提问作者Aneeq Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:32:55