ios - Swift 中的字符串操作(子字符串)

标签 ios swift

如果我有如下字符串:

"abc; expire=Thu, 16-Oct-2014 16:46:53 GMT; path=/;",我正在尝试提取 expire= 和下一个 之间的所有内容>; 这样我就可以获得时间戳,我将如何在 Swift 中执行此操作?我完全被字符和 StringIndex 的想法搞糊涂了。我觉得下面的代码会给我 "expire=":

字符串中的位置

var range = cookie!.rangeOfString("expires=");

但是我不明白我应该从那里去哪里。

在类似 Java 的语言中,算法类似于:

1) 定位“expires=”的索引;

2) 将“expires=”之后的所有子串取到完整字符串的末尾;

3) 在子字符串中查找第一次出现的“;”

4) 从索引 0 到索引 3 中的所有内容都是过期时间戳。

您如何处理 Swift 字符串?

最佳答案

在 Swift 中,您可以使用正则表达式搜索字符串,而无需处理 NSRegularExpression明确地:

let str = "abc; expire=Thu, 16-Oct-2014 16:46:53 GMT; path=/;"
let range = str.rangeOfString("(?<=expire=)[^;]*", options: .RegularExpressionSearch)
if let range = optRange? {
    print(str.substringWithRange(range))
} else {
    print("Not found")
}

正则表达式很简单:[^;]*表示“直到第一个分号的一系列字符”; (?<=expire=)意思是“仅当前面有 expire= 字符串时才匹配”。

Demo.

关于ios - Swift 中的字符串操作(子字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26166775/

相关文章:

ios - Xcode:Entitlements.plist 文件在哪里?

ios - 将 findObjectsInBackgroundWithBlock 的结果传递到变量中

swift - 将 RxSwift 计时器和间隔可观察量组合成一个带有完成的可观察量

ios - 使用相同的请求标识符同时注册 2 个本地通知而不覆盖

ios - "Struct"的不可变值仅具有名为 "Function"的变异成员

ios - flutter 无法使用 Xcode11.3 构建

ios - 找不到 "This application is modifying the autolayout engine from a background thread"的来源

ios - 无法展开我的变量

ios - 启用分页时 UICollectionView 使隐藏单元出列

ios - tableview Controller 上的粘性 UILabel