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

Swift 4中如何获取两个双引号之间的子字符串?

解决Swift中提取带双引号字符串子串的问题

别担心,这个问题其实很好解决!核心是你得告诉Swift:你要找的是双引号字符,而不是代码里用来包裹字符串的语法符号——这时候就需要用转义字符\"来表示真正的双引号。

下面给你几种实用的方法,都能轻松从["39013"]里提取出39013:

方法一:用转义双引号定位索引

既然要找双引号的位置,直接用转义后的\"来查找就行:

let desString = "[\"39013\"]" // 注意这里的双引号也要转义,或者Swift 5.6+可以用单引号包裹:let desString = '["39013"]'
if let firstQuoteIndex = desString.firstIndex(of: "\""), 
   let lastQuoteIndex = desString.lastIndex(of: "\""),
   firstQuoteIndex < lastQuoteIndex {
    let result = desString[desString.index(after: firstQuoteIndex)..<lastQuoteIndex]
    print(String(result)) // 输出:39013
}

方法二:分割字符串(更简单)

直接用双引号作为分隔符,把字符串拆分成数组,然后取中间的元素:

let desString = "[\"39013\"]"
let components = desString.components(separatedBy: "\"")
if components.count >= 3 {
    let result = components[2]
    print(result) // 输出:39013
}

这种方法不用纠结索引位置,直接靠分割就能拿到目标内容,特别适合格式固定的字符串。

方法三:正则表达式(适配复杂格式)

如果你的字符串格式可能有变化,正则表达式会更灵活:

import Foundation

let desString = "[\"39013\"]"
// 用Swift原始字符串(#包裹),里面的双引号无需转义
if let match = desString.range(of: #"\"(\d+)\""#, options: .regularExpression) {
    let result = desString[match].trimmingCharacters(in: CharacterSet(charactersIn: "\""))
    print(result) // 输出:39013
}

另外补充个小技巧:Swift 5.6及以上版本支持用单引号'包裹包含双引号的字符串,比如let desString = '["39013"]',这样里面的双引号不用转义,写起来更省心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:33:48