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
相关产品推荐
相关产品推荐

