macos - 以编程方式快速格式化字符串

标签 macos 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:)来识别.

关于macos - 以编程方式快速格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29592569/

相关文章:

php - 在 Mac Book Pro (El Capitan 10.11.4) 上编译 PHP Intl 扩展

ios - 如何在类扩展中添加静态(存储)属性以创建单例? ( swift )

swift - 当键存在或不存在时如何将元素附加到字典中

objective-c - 以编程方式获取 Mac 上所有正在运行的进程的列表

python - 在 MacOS 上使用 PyInstaller 加载 Python 库时出错

ios - 如何在单击按钮时在 UITableView 中添加单元格?

Swift 在滑动时保留 UIPageViewController 中的文本字段内容

swift - 使用多边形三角剖分创建自定义几何体并在 SceneKit 中应用纹理坐标

cocoa - Xcode 编译仅适用于 Intel 32-64 位

macos - 如何在启用 Mac App Sandbox 的情况下运行 Shell 脚本?