簡體   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