问题描述
我有一个功能,它可以从我的控制器中获取第二个信息,并从网络服务中获取introInterval。但是我的代码不会拆分来自API的字符串。但是,如果我输入虚拟数据,它就可以工作。我不知道为什么。问题出在哪儿 ?它们都使用相同的字符串。我的目标是使用测试变量来捕获相同的数据。您可以在打印行中看到它们的输出。
func getCurrentPlayerTimeAndIntroDuration(second: String,introInterval: String?) {
if let introInterval = introInterval {
print(introInterval) //output: "01:38 - 5:00"
let test = "01:38 - 5:00".trimmingCharacters(in: .whitespacesAndNewlines).components(separatedBy: "-")
let introIntervalArray = introInterval.trimmingCharacters(in: .whitespacesAndNewlines).components(separatedBy: "-")
print("test \(test)") //output: ["01:38","5:00"] correct
print("introIntervalArray \(introIntervalArray)") //output introIntervalArray ["01:38–02:13"] wrong
}
}
解决方法
我相信您使用错误的字符来分隔字符串。如果比较示例-
中的//output introIntervalArray ["01:38–02:13"] wrong
(非ASCII)字符,您会发现–
与用于拆分字符串-
的字符不同( ASCII)。
此代码:
let test = "01:38–02:13".trimmingCharacters(in: .whitespacesAndNewlines).components(separatedBy: "–")
输出:
["01:38","02:13"]