【问题标题】:Extract Integers, Decimals, and Fractional Numbers from sentence of a string从字符串的句子中提取整数、小数和小数
【发布时间】:2017-07-06 06:26:55
【问题描述】:

如何从句子中提取包含整数、小数和分数的字符串数组? 请在 iOS Swift 中找到下面的输入和输出。

输入:字符串数组["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"]

输出:[“32.3”,“61 1/4”,“23 4/5”,“5.23”]

【问题讨论】:

    标签: ios arrays swift string


    【解决方案1】:

    正则表达式的另一种方法

    let array = ["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"]
    let pattern = "\\d+[\\s.][\\d/]+"
    
    let regex = try! NSRegularExpression(pattern: pattern)
    var result = [String]()
    
    for item in array {
        if let match = regex.firstMatch(in: item, range: NSRange(location:0, length: item.characters.count)) {
            result.append((item as NSString).substring(with: match.range))
        }
    }
    
    print(result)
    

    模式搜索

    • 一位或多位数字
    • 后跟一个空格字符或点
    • 后跟一个或多个数字或斜线

    【讨论】:

    • 谢谢,这也可以完美地与我需要的精确输出配合使用。
    【解决方案2】:

    添加这个以支持字符串的正则表达式匹配:

    extension String {
        mutating func stringByRemovingRegexMatches(pattern: String, replaceWith: String = "") {
            do {
                let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)
                let range = NSMakeRange(0, self.characters.count)
                self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith)
            } catch {
                return
            }
        }
    }
    

    然后:

    var str = ["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"]
    var vreturn:[String]=[]
    
    for var s in str {
        s.stringByRemovingRegexMatches(pattern:"[a-zA-Z]", replaceWith: "")
        vreturn.append(s)
    }
    
    print( vreturn)
    

    来源:Swift replace substring regex

    【讨论】:

    • 字符串可以是任意字符串,它是动态测试输入,不只是宽度、长度,任意字符串。对于您的情况,如果它是静态数据,则您的提取是正确的。对于动态数据,如何提取数字或分数或数字。
    • 非常感谢,您节省了我的时间。现在它完美地工作了。
    • 考虑每个提取的字符串都以(空白)空格字符开头。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 2021-04-22
    相关资源
    最近更新 更多