iOS截取特定的字符串(正则匹配)
2017-11-21 19:33
399 查看
有时候我们会有需求从一个字符串中截取其他的字符串,根据情况的不同,我们来分析几种方法~~
一. 固定长度字符串中截取固定位置长度的字符串
// 这是比较简单的一种情况:比如截取手机号的后4位 let phoneNum = "18515383061" var suffixNum:String? // 从倒数第四位开始截取,截取到最后 suffixNum = phoneNum.substringFromIndex(phoneNum.endIndex.advancedBy(-4)) // 从开头截取到第三位,获取手机号前3位 let prefixNum = phoneNum.substringToIndex(phoneNum.startIndex.advancedBy(3)) // 截取区间内字符串 suffixNum = phoneNum.substringWithRange(phoneNum.endIndex.advancedBy(-4)..<phoneNum.endIndex)
二. 不固定长度的字符串,但是有分隔符
//例如获取日期中的年,月,日 // 分割符可以是任意的字符,一般为'/','_','空格',或者是特殊的字符. let timeStr = "2013/10/26" let timeArr = timeStr.componentsSeparatedByString("/") print(timeArr)
三. 不固定长度的字符串,取特殊规则下的字符串
// 如下所示,我们想要截取第一个中括号里面的字符串 // 假设这个字符串是服务器返回的,长度不定,中括号的位置也不定,先后通过简单的截取就比较困难了 // 这个时候就要用到**正则表达式**,相信大家知道,但如何在Swift中利用正则表达式来筛选值呢,我们来分析一下 // rangOfString本来是用来收索文中的字符串的,但是可以选择模式.这里选择(.RegularExpressionSearch)也就是正则的搜索 // 但是OC和Swift中都只有这一种收索方法,只有Search,没有其他的,相比其他的语言(Python,PHP)弱太多了 // 单纯匹配中括号里的字正则想必大家都会写 "\\[.*\\]",但是有一个问题就是收索的内容是'[thing] jflsdfs [do]',这显然不是我们想要的 // 这就要收到正则的贪婪模式了,默认它尽可能多的匹配符合要求的字符串,而我们想让他满足最精巧的那个,就需要加上一个?号,就是这个样子"\\[.*?\\]",这样搜索到的就是'[thing]' // 你发现这还不是我们想要的,为什么要带上'['和']'呢,但是没办法,这是你的检索条件啊 // 但是什么也难不倒正则,正则当中有 零宽断言,<零宽度正预测先行断言(?=exp)> 断言自身出现的位置的后面能匹配表达式exp, // <零宽度正回顾后发断言(?<=exp)>,它断言自身出现的位置的前面能匹配表达式exp,最终我们的表达式是"(?<=\\[).*?(?=\\])" let string = "I Want to Do some [thing] jflsdfs [do]" if let result = string.rangeOfString("(?<=\\[).*?(?=\\])", options: .RegularExpressionSearch, range:string.startIndex..<string.endIndex, locale: nil) { print(string.substringWithRange(result)) }
作者:SSBun 链接:http://www.jianshu.com/p/d6fcc9bcd8de 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- iOS 正则匹配,截取需要字符串的用法
- 正则表达式-字符串基本的匹配,拆分,替换和截取
- 正则表达式怎样匹配 不包含特定字符串的字符串
- 正则表达式 匹配以特定字符串开头 到任意第一个字符中间的空格
- JS基于正则截取替换特定字符之间字符串操作示例
- 正则表达式-匹配txt中的特定字符串
- iOS NSString 字符串处理:截取字符串、匹配字符串、分隔字符串、拼接字符串、替换字符串
- 正则表达式:不匹配特定的字符串
- iOS NSString 字符串处理:截取字符串、匹配字符串、分隔字符串
- ios 字符串处理:截取字符串、匹配字符串、分隔字符串
- iOS NSString 字符串处理:截取字符串、匹配字符串、分隔字符串
- 正则表达式截取两个特定字符串之间的字符串
- ios正则匹配字符串-备忘
- js正则实现从一段复杂html代码字符串中匹配并处理特定信息
- iOS字符串的截取、匹配、分割
- java 正则匹配空格字符串 正则表达式截取字符串
- IOS NSString 字符串处理:截取字符串、匹配字符串、分隔字符串
- 正则表达式匹配不包含特定字符串解决匹配溢出问题
- iOS开发--- NSString 字符串处理:截取字符串、匹配字符串、分隔字符串
- java正则匹配字符串中不包含一个或几个特定的字符串