【问题标题】:Match string patterns including variables parts in Swift [closed]匹配字符串模式,包括 Swift 中的变量部分 [关闭]
【发布时间】:2015-01-23 20:33:22
【问题描述】:

我正在尝试在 Swift 中匹配字符串模式。在我的情况下与时间有关,

示例

“在 1 周内”

“在 4 周内”

我想匹配整个表达式,但特别返回 "in" 和 "week" 之间使用的数字 (Int)。

进行这种字符串/模式匹配的有效方法是什么?

我确实使用了例如rangeOfString 之前用于简单的字符串匹配,但我想知道如何处理匹配这些更复杂的字符串模式,包括其可变部分。

【问题讨论】:

  • 看看regular expressions。在这种情况下,您需要的 RE 是“在 ([0-9]+) 周内?”

标签: ios regex string swift nsstring


【解决方案1】:

试试这个:

var pattern = "in\\s+(\\d+)\\s+weeks"
var error: NSError?
var regExp = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error)!

func getWeekCount(input: String) -> String? {
    let m = regExp.matchesInString(input, options: nil, range:NSMakeRange(0, countElements(input)))
    print(m)

    if let mm = m as? [NSTextCheckingResult] {
        print(mm.count)

        if mm.count >= 1 {
            let range = m[0].rangeAtIndex(1)
            return NSString(string: input).substringWithRange(range)
        }
    }
    else {
        print("no match")
    }
    return nil
}

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多