子串在快速4中的两个(")符号之间?

时间:2018-02-11 21:18:42

标签: swift substring

我在获取包含两个双引号"的字符串的子字符串时遇到问题。 例如:我的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]

3 个答案:

答案 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"
}
相关问题