【问题标题】:Last Instance of Character角色的最后一个实例
【发布时间】:2014-10-10 17:07:14
【问题描述】:

我正在寻找字符串中字符的最后一个实例。鉴于 Swift 处理字符串(范围)的不同方式,我希望有人之前遇到过这种情况,因为我似乎无法找出处理它的最佳方式。

我要解析的字符串类似于“http://imanimage_thatlooks_likethis_andmypixare_380.jpg”。我需要解析最后一个“_”和最后一个“.”之间的段。所以数字 380。每个链接都以这种方式格式化,但 Swift 的子字符串方法对我来说仍然有点陌生,包含不同的字节长度。

提前致谢!

【问题讨论】:

    标签: string swift indexing substring


    【解决方案1】:
    // regular expression to find substring between last "_" and last "."
    let sourceStr = "abc_defg_hijk_lmn.xyz"
    let regex = NSRegularExpression( pattern: "_([^_]*)\\.[^\\.]*$", options:nil, error:nil );
    if let matchingResult = regex?.firstMatchInString( sourceStr, options: nil, range: NSMakeRange( 0, countElements( sourceStr ) ) ) {
        let matchingRange = matchingResult.rangeAtIndex(1)
        let matchingString = (sourceStr as NSString).substringWithRange( matchingRange )
    }
    

    【讨论】:

    • 使用上面的方法,我可以获得一个 NSRange,但是当尝试以这种方式使用它时 myString.substringWithRange(matchingRange) 它说必须使用 string.index,而不是 NSRange。
    • 好的,我加了一行来获取子字符串。
    • 这似乎行得通。将 String.index 的快速字符串对象转换为 NSString 是否有任何潜在问题?
    • 不知道有没有问题。 Apple 的“将 Swift 与 Cocoa 和 Objective-C 结合使用”iBook 中指出:“Swift 自动在 String 类型和 NSString 类之间建立桥梁。这意味着在任何使用 NSString 对象的地方,您都可以使用 Swift String 类型,并获得这两种类型的好处——String 类型的插值和 Swift 设计的 API 以及 NSString 类的广泛功能。 ” 摘自:Apple Inc. “将 Swift 与 Cocoa 和 Objective-C 结合使用。”电子书。 itun.es/us/1u3-0.l
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2015-11-15
    • 1970-01-01
    • 2018-07-09
    • 2017-01-14
    • 2018-03-04
    • 2012-03-03
    相关资源
    最近更新 更多