繁体   English   中英

如何从Swift 4中的字符串中提取未知子字符串?

[英]How can I extract an unknown substring from a string in Swift 4?

使用swift 4,我需要解析一个字符串以获得总是不同的子字符串。 例如:

let str = "[33376:7824459] Device Sarah's Phone (Hardware: D21AP, ECID: 8481036056622, UDID: 76e6bc436fdcfd6c4e39c11ed2fe9236bb4ec, Serial: F2LVP5JCLY)"

let strRange = str.range(of: "(?<=Device )(?= (Hardware)", options: .regularExpression)
print(strRange!)

我想这会输出“莎拉的电话”

我没有在这段代码上出现任何错误,但它也无法正常工作。 我究竟做错了什么?

几个问题:

  1. 你有一个前瞻和后视,但没有任何实际上匹配任何字符,所以它永远不会匹配除空字符串之外的任何东西。

  2. 您没有正确地逃避前瞻中的括号。

  3. 你应该使用if letguard let ,而不是! ,打开可选项。 否则,当遇到与模式不匹配的输入字符串时,您将遇到崩溃。

  4. 我不确定为什么你会期望print(strRange)输出文本。 strRange是一个范围,而不是字符串或子字符串。

此示例将解决您的问题:

import Foundation

let str = "[33376:7824459] Device Sarah's Phone (Hardware: D21AP, ECID: 8481036056622, UDID: 76e6bc436fdcfd6c4e39c11ed2fe9236bb4ec, Serial: F2LVP5JCLY)"

if let strRange = str.range(of: "(?<=Device ).*(?= \\(Hardware)", options: .regularExpression) {
    print(str[strRange])
} else {
    print("Not Found")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM