gpt4 book ai didi

swift - 如何从格式化字符串中填充结构对象?

转载 作者:行者123 更新时间:2023-11-28 15:18:45 25 4
gpt4 key购买 nike

struct Data {
var DT: Date?
var D1: Double
var D2: Double
var D3: Double
var D4: Double
var I1: Int
}

var data = [Data]()
var format = "yyyyMMdd;%f;%f;%f;%f;%d"
var test = "20170924;1.1;2.2;3.3;4.4;100"

使用 format 将值从 test 放入 data 的最简单方法是什么?ps:格式中的分隔符可以是“,”或者其他。

最佳答案

您可以使用以下函数来获取填充的 Data 对象:

func getDesiredData(formattedString: String, dateFormat: String, separator: String) -> Data? {
let array = formattedString.components(separatedBy: separator)

//print(array.count)

if array.count < 6 {
// something went wrong seprating the formatted string
return nil
}

guard let d1 = Double(array[1]), let d2 = Double(array[2]), let d3 = Double(array[3]), let d4 = Double(array[4]), let i1 = Int(array[5]) else {
// something went wrong when converting string to doubles/int
return nil
}

var formatter = DateFormatter()
formatter.dateFormat = dateFormat
let date = formatter.date(from: array[0])

return Data(DT: date, D1: d1, D2: d2, D3: d3, D4: d4, I1: i1)
}

正如您在函数签名中所见,您可以随意添加所需的:

  • formattedString,例如:“yyyyMMdd;%f;%f;%f;%f;%d”。
  • dateFormat,例如:“yyyyMMdd”。
  • 分隔符,例如:“,”或“;”。

输出:

// happy case ";":
let test1 = getDesiredData(formattedString: "20170924;1.1;2.2;3.3;4.4;100", dateFormat: "yyyyMMdd", separator: ";")
dump(test1)

// happy case ",":
let test2 = getDesiredData(formattedString: "20170924,1.1,2.2,3.3,4.4,100", dateFormat: "yyyyMMdd", separator: ",")
dump(test2)

// wrong format:
let test3 = getDesiredData(formattedString: "wrong;format;goes;here", dateFormat: "yyyyMMdd", separator: ";")
dump(test3) // nil

// wrong separator:
let test4 = getDesiredData(formattedString: "20170924;1.1;2.2;3.3;4.4;100", dateFormat: "yyyyMMdd", separator: "!")
dump(test4) // nil

关于swift - 如何从格式化字符串中填充结构对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46387036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com