簡體   English   中英

快速從字符串中提取值

[英]Extract values from string in swift

我有一個如下所示的字符串,並且我試圖將每個部分(,)分成一個數組。

let stringArr = remainderString.componentsSeparatedByString(",")

0lY6P5Ur90TAQnnnI6wtnb,#29,Projekt-FZK-Haus,Projekt FZK-House由KHH Forschuungszentrum Karlsruhe創建,$,$,$,(#67,#229,#275),#42

結果

["0lY6P5Ur90TAQnnnI6wtnb", "#29", "Projekt-FZK-Haus", "Projekt FZK-House create by KHH Forschuungszentrum Karlsruhe", "$", "$", "$", "(#67", "#229", "#275)", "#42"]

如果您注意到,則零件(#67,#229,#275)分為“(#67”,“#229”,“#275)”

我想將這些值插入到另一個數組中。 所以我的問題是,我怎樣才能找到開頭然后是結尾

嘗試這個:

// Subscripting a String with NSRange. Make dealing with ObjC-classes easier
extension String {
    subscript(range: NSRange) -> String {
        let startIndex = self.startIndex.advancedBy(range.location)
        let endIndex = startIndex.advancedBy(range.length)

        return self[startIndex..<endIndex]
    }
}

let str = "0lY6P5Ur90TAQnnnI6wtnb,#29,Projekt-FZK-Haus,Projekt FZK-House create by KHH Forschuungszentrum Karlsruhe,$,$,$,(#67,#229,#275),#42"
let regex = try! NSRegularExpression(pattern: "\\((#[^\\)]+)\\)", options: [])

if let match = regex.firstMatchInString(str, options: [], range: NSMakeRange(0, str.characters.count)) {
    let substr = str[match.rangeAtIndex(1)]
    let components = substr.componentsSeparatedByString(",")

    print(components)
}

另一個例子。 正確使用基於UTF-16的索引和范圍,因此可用於包含非BMP字符的字符串。

let str = "0lY6P5Ur90TAQnnnI6wtnb,#29,Projekt-FZK-Haus,Projekt FZK-House create by KHH Forschuungszentrum Karlsruhe,$,$,$,(#67,#229,#275),#42"
let pattern = "(\\([^\\)]*\\)|[^\\(,][^,]*)(?:,|$)"
let regex = try! NSRegularExpression(pattern: pattern, options: [])
let matches = regex.matchesInString(str, options: [], range: NSRange(0..<str.utf16.count))
let stringArr = matches.map{match->String in
    let matchingRange = match.rangeAtIndex(1)
    let matchingString = (str as NSString).substringWithRange(matchingRange) as String
    return matchingString
}
print(stringArr) //->["0lY6P5Ur90TAQnnnI6wtnb", "#29", "Projekt-FZK-Haus", "Projekt FZK-House create by KHH Forschuungszentrum Karlsruhe", "$", "$", "$", "(#67,#229,#275)", "#42"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM