如何在Swift中创建类似于Ruby中的扫描的函数

阿尔蒂

我是新手,它正在寻找一种基于正则表达式匹配的将字符串分离为数组的有效方法。

在Ruby中,它是一个单行命令

irb(main):006:0> number = "(123) 456-7890"
=> "(123) 456-7890"
irb(main):007:0> number.scan(/(\w+)/).join()
=> "1234567890"
irb(main):008:0> 

在Swift中,它很复杂,我从这里的答案中使用了此函数。Swift提取正则表达式匹配项,将组件分成String数组。联接的工作方式相同,因此至少是好的。快速有扫描功能吗?如果没有,如何创建可以使用的全局函数。

func matchesForRegexInText(regex: String!, text: String!) -> [String] {

    let regex = NSRegularExpression(pattern: regex,
        options: nil, error: nil)!
    let nsString = text as NSString
    let results = regex.matchesInString(nsString as String,
        options: nil, range: NSMakeRange(0, nsString.length))
        as! [NSTextCheckingResult]
    return map(results) { nsString.substringWithRange($0.range)}
}

var number = "(123) (456) 7890"    
var wordArr = matchesForRegexInText("\\w+", number)
join("",wordArr) #> "1234567890"
马丁·R

String没有类似的scan()方法,但是您可以使用相同的方法轻松定义一个方法:

extension String {
    func scan(regex : String) -> [String] {
        let regex = NSRegularExpression(pattern: regex,
            options: nil, error: nil)!
        let nsString = self as NSString
        let results = regex.matchesInString(nsString as String,
            options: nil, range: NSMakeRange(0, nsString.length))
            as! [NSTextCheckingResult]
        return map(results) { nsString.substringWithRange($0.range)}
    }
}

例子:

let number = "(123) (456) 7890"
let wordArr = number.scan("\\w+")
println(wordArr) // [123, 456, 7890]

let digitsOnly = "".join(wordArr)
println(digitsOnly) // 1234567890

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中创建类似于GUI的文本界面

来自分类Dev

如何在C ++中创建类似于stl的库

来自分类Dev

如何在android中创建类似于fb的事件表单

来自分类Dev

如何在 Python 中创建类似于 excel 的计算字段?

来自分类Dev

如何在Nim中编写类似于`echo`的函数?

来自分类Dev

类似于Swift中的python的map函数

来自分类Dev

类似于Swift中的python的map函数

来自分类Dev

类似于sql中的函数

来自分类Dev

如何在Kotlin中创建类似于Java中的权限数组?

来自分类Dev

如何在kotlin中传递带参数的函数引用?类似于 javascript 中的 bind()

来自分类Dev

是否可以在Python中创建类似于JS间隔的函数?

来自分类Dev

如何在WP8应用中创建类似于UI的图块?

来自分类Dev

如何在Java中创建类似于“动态枚举”的常量分组?

来自分类Dev

如何在JAVA GUI中创建类似于Google搜索样式的搜索栏

来自分类Dev

如何在MapKit JS中创建类似于Google的Place Autocomplete的自动完成查找

来自分类Dev

如何在pyqt5中创建类似于计算器的按钮网格

来自分类Dev

如何在Xamarin.Forms中创建类似于日志记录控件的功能

来自分类Dev

如何在此示例中围绕圆创建“类似于太阳”的线条?

来自分类Dev

如何在C#中创建类似于数组声明的方法?

来自分类Dev

如何在命令行程序中创建类似于窗口的元素?

来自分类Dev

如何在JAVA GUI中创建类似于Google搜索样式的搜索栏

来自分类Dev

如何在类似于Excel公式的SSRS报告中创建表达式?

来自分类Dev

如何在realm-react-native中创建嵌套的类似于文件夹的结构?

来自分类Dev

如何在 iOS 中创建类似于 yelp 的复杂滚动视图?

来自分类Dev

如何在 Flask 中创建类似于 Codeigniter 的 MVC 文件夹结构

来自分类Dev

如何在 C# 中创建类似于 ViewBag 的自己的动态对象?

来自分类Dev

如何在 autodesk-viewer 中创建类似于具有模型属性的窗口的窗口?

来自分类Dev

如何在JavaScript中创建类似something.function()的函数?

来自分类Dev

如何在 php 中创建类似 pow 的函数

Related 相关文章

  1. 1

    如何在C中创建类似于GUI的文本界面

  2. 2

    如何在C ++中创建类似于stl的库

  3. 3

    如何在android中创建类似于fb的事件表单

  4. 4

    如何在 Python 中创建类似于 excel 的计算字段?

  5. 5

    如何在Nim中编写类似于`echo`的函数?

  6. 6

    类似于Swift中的python的map函数

  7. 7

    类似于Swift中的python的map函数

  8. 8

    类似于sql中的函数

  9. 9

    如何在Kotlin中创建类似于Java中的权限数组?

  10. 10

    如何在kotlin中传递带参数的函数引用?类似于 javascript 中的 bind()

  11. 11

    是否可以在Python中创建类似于JS间隔的函数?

  12. 12

    如何在WP8应用中创建类似于UI的图块?

  13. 13

    如何在Java中创建类似于“动态枚举”的常量分组?

  14. 14

    如何在JAVA GUI中创建类似于Google搜索样式的搜索栏

  15. 15

    如何在MapKit JS中创建类似于Google的Place Autocomplete的自动完成查找

  16. 16

    如何在pyqt5中创建类似于计算器的按钮网格

  17. 17

    如何在Xamarin.Forms中创建类似于日志记录控件的功能

  18. 18

    如何在此示例中围绕圆创建“类似于太阳”的线条?

  19. 19

    如何在C#中创建类似于数组声明的方法?

  20. 20

    如何在命令行程序中创建类似于窗口的元素?

  21. 21

    如何在JAVA GUI中创建类似于Google搜索样式的搜索栏

  22. 22

    如何在类似于Excel公式的SSRS报告中创建表达式?

  23. 23

    如何在realm-react-native中创建嵌套的类似于文件夹的结构?

  24. 24

    如何在 iOS 中创建类似于 yelp 的复杂滚动视图?

  25. 25

    如何在 Flask 中创建类似于 Codeigniter 的 MVC 文件夹结构

  26. 26

    如何在 C# 中创建类似于 ViewBag 的自己的动态对象?

  27. 27

    如何在 autodesk-viewer 中创建类似于具有模型属性的窗口的窗口?

  28. 28

    如何在JavaScript中创建类似something.function()的函数?

  29. 29

    如何在 php 中创建类似 pow 的函数

热门标签

归档