簡體   English   中英

以編程方式快速格式化字符串

[英]Programmatically formatting string in swift

我有琴弦

var arrayWithStrings = ["813 - Crying Flute.mp3", "Ark Patrol - Never.mp3"]

我想得到

var stringTitle1 = "813"
var stringNameOfTrack1 = "CryingFlute"
var stringFormat1 = "mp3"
var stringTitle2 = "Ark Patrol"
var stringNameOfTrack2 = "Never"
var stringFormat2 = "mp3"

如何以編程方式進行?

您可以使用正則表達式:

let string = "813 - Crying Flute.mp3"

let regex = try! NSRegularExpression(pattern: "^(.*) - (.*)\\.(.*)$")

if let match = regex.firstMatch(in: string, range: string.nsRange) {
    let title  = string[match.range(at: 1)]
    let name   = string[match.range(at: 2)]
    let format = string[match.range(at: 3)]
}

在Swift 4中:

extension String {

    /// An `NSRange` that represents the full range of the string.

    var nsRange: NSRange {
        return NSRange(startIndex ..< endIndex, in: self)
    }

    /// Substring from `NSRange`
    ///
    /// - Parameter nsRange: `NSRange` within the string.
    /// - Returns: `Substring` with the given `NSRange`, or `nil` if the range can't be converted.

    subscript(nsRange: NSRange) -> Substring? {
        return Range(nsRange, in: self)
            .flatMap { self[$0] }
    }
}

正則表達式的()是“捕獲括號”以標識可以由range(at:)標識的子字符串。

暫無
暫無

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

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