我在获取包含两个双引号"
的字符串的子字符串时遇到问题。
例如:我的desString等于[" 39013"]
我需要:39013
但问题是当我寻找"
符号的索引时,Swift将其视为普通代码,而不是特定字符。我该如何解决这个问题?
这不是重复的,在这个问题中他要问'
符号,但是当我打印特定值时,我问"
哪个是类似的符号(例如:print(&#) 34; dup")。这意味着,当我试图找到"
char index(of """)
的索引时,其中有三个,Xcode表示其中一个缺失。实际上它是&#39不要错过,我正在寻找它。但这就是问题所在。
以下是我的代码,可以找到"["
和"]"
的索引。
let first = desString.index(of: "[") ?? desString.startIndex
let last = desString.index(of: " ") ?? desString.endIndex
let substring1 = desenString[first..<last]
答案 0 :(得分:1)
要将"
放在引号内,您需要通过添加\
来转义它:
let quote = "\""
或
let string = "Put \"this\" in quotes."
顺便说一句,这就是我可能会自己解决问题的方法,但评论中讨论的问题中的各种答案也很好:
let string = "[\"39013\"]"
let quote: Character = "\""
let num: Substring = string
.drop(while: { $0 != quote }).dropFirst() // Drop everything until the first "
.prefix(while: { $0 != quote }).dropLast() // Take until the next "
答案 1 :(得分:1)
我喜欢正则表达式:
Lib1
答案 2 :(得分:1)
只是为了好玩。首先,我认为值得一提的是,您应该使用JSONSerialization
或使用Codable
协议来解析您的JSON数组。如果您想要进行常规String
搜索,可以使用index(of: Character)
查找第一个匹配项,然后在找到第一个索引后在索引的子字符串处重复索引搜索:
let string = "[\"39013\"]"
if let index = string.index(of: "\""),
case let start = string.index(after: index),
let end = string[start...].index(of: "\"") {
let substring = string[start..<end]
print(substring) // "39013\n"
}