文档章节

Swift3.0语言教程查找字符集和子字符串

大学霸
 大学霸
发布于 2016/11/11 13:59
字数 2417
阅读 105
收藏 0

Swift3.0语言教程查找字符集和子字符串

Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法。以下我们将讲解3种查找字符集和子字符串的方法,判断字符串中是否包含某个给定字符串、搜索字符集或者子字符串和枚举字符串。

1.判断字符串中是否包含某个给定字符串

NSString提供了3种方法用于判断字符串是否包含其他字符串。它们分别为contains(_:)、localizedCaseInsensitiveContains(_:)和localizedStandardContains(_:)方法。

(1)contains(_:)方法用来判断字符串A是否包含aString字符串,其语法形式如下:

func contains(_ str: String) -> Bool

其中,str用来指定一个字符串。

【示例1-40】以下将判断在字符串a中是否包含"Hello"、"ello"和"eo"字符串。

import Foundation

var  a=NSString(string:"Hello,World")

//判断在字符串a中是否包含"Hello"字符串

if(a.contains("Hello")){

    print("a字符串中包含Hello字符串")

}else{

    print("a字符串中不包含Hello字符串")

}

//判断在字符串a中是否包含"ello"字符串

if(a.contains("ello")){

    print("a字符串中包含ello字符串")

}else{

    print("a字符串中不包含ello字符串")

}

//判断在字符串a中是否包含"eo"字符串

if(a.contains("eo")){

    print("a字符串中包含eo字符串")

}else{

    print("a字符串中不包含eo字符串")

}

运行结果如下:

a字符串中包含Hello字符串

a字符串中包含ello字符串

a字符串中不包含eo字符串

(2)localizedCaseInsensitiveContains(_:)方法的功能是判断字符串A是否包含字符串B,不区分大小写,其语法形式如下:

func localizedCaseInsensitiveContains(_ str: String) -> Bool

其中,str用来指定一个字符串。

【示例1-41】以下将判断在字符串a中是否包含"hello"、"ello"和"eo"字符串。

import Foundation

var  a=NSString(string:"Hello,World")

//判断在字符串a中是否包含"Hello"字符串

if(a.localizedCaseInsensitiveContains("hello")){

    print("a字符串中包含hello字符串")

}else{

    print("a字符串中不包含hello字符串")

}

//判断在字符串a中是否包含"ello"字符串

if(a.localizedCaseInsensitiveContains("ello")){

    print("a字符串中包含ello字符串")

}else{

    print("a字符串中不包含ello字符串")

}

//判断在字符串a中是否包含"eo"字符串

if(a.localizedCaseInsensitiveContains("eo")){

    print("a字符串中包含eo字符串")

}else{

    print("a字符串中不包含eo字符串")

}

运行结果如下:

a字符串中包含hello字符串

a字符串中包含ello字符串

a字符串中不包含eo字符串

(3)localizedStandardContains(_:)方法可以用来判断本地化的字符串A是否包含字符串B,其语法形式如下:

func localizedStandardContains(_ str: String) -> Bool

其中,str用来指定一个字符串。

【示例1-42】以下将判断在字符串a中是否包含"He"字符串。

import Foundation

var  a=NSString(string:"Hello,World")

if(a.localizedStandardContains("He")){

    print("a字符串中包含He字符串")

}else{

    print("a字符串中不包含He字符串")

}

运行结果如下:

a字符串中包含He字符串

2.搜索字符集或者子字符串

在上文中判断字符串中是否包含某个给定字符串其实就是对字符串的一种搜索,它返回的是一个Bool值。为了让搜索更为详细,我们将使用下面的内容实现,也就是搜索字符集或者子字符串。

(1)搜索字符集

在字符串中如果我们需要搜索指定字符集(字符集表示一个字符),需要使用到NSString中的3个方法,分别为:rangeOfCharacter(from:)、rangeOfCharacter(from:options:)和rangeOfCharacter(from:options:range:)方法。

rangeOfCharacter(from:)方法实现的功能是搜索指定的字符集,其语法形式如下:

func rangeOfCharacter(from searchSet: CharacterSet) -> NSRange

其中,searchSet用来指定字符集。

【示例1-43】以下将在字符串中搜索字符集c,并输出字符集c的第一个位置。

import Foundation

var a=NSString(string:"Hello,World")

var c:CharacterSet=NSCharacterSet(charactersIn:"W") as CharacterSet

print(a.rangeOfCharacter(from: c).location)                                        //搜索字符集

运行结果如下:

6

rangeOfCharacter(from:options:)方法和rangeOfCharacter(from:)方法的功能类似,但是它比rangeOfCharacter(from:)方法多了一个mask参数,该参数可以用来指定一个选项标记(这个标记可以作为搜索的条件)。其语法形式如下:

func rangeOfCharacter(from searchSet: CharacterSet, options mask: NSString.CompareOptions = []) -> NSRange

【示例1-44】以下将使用rangeOfCharacter(from:options:)方法对指定字符集进行搜索,并输出字符集的第一个位置。

import Foundation

var a=NSString(string:"Hello,World")

var c:CharacterSet=NSCharacterSet(charactersIn:"r") as CharacterSet

print(a.rangeOfCharacter(from: c, options: NSString.CompareOptions.caseInsensitive).location)

运行结果如下:

8

rangeOfCharacter(from:options:range:)方法和rangeOfCharacter(from:options:)方法的功能类似,但是它比rangeOfCharacter(from:options:)方法多了一个rangeOfReceiverToSearch参数,该参数可以设置搜索的范围。其语法形式如下:

func rangeOfCharacter(from searchSet: CharacterSet, options mask: NSString.CompareOptions = [], range rangeOfReceiverToSearch: NSRange) -> NSRange

【示例1-45】以下将使用rangeOfCharacter(from:options:range:)方法对指定字符集进行搜索,并输出字符集的第一个位置。

import Foundation

var a=NSString(string:"Hello,World")

var c:CharacterSet=NSCharacterSet(charactersIn:"r") as CharacterSet

print(a.rangeOfCharacter(from: c, options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(3, 7)).location)                                                                           //搜索字符集

print(a.rangeOfCharacter(from: c, options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(0, 3)).location)                                                                           //搜索字符集

运行结果如下:

8

9223372036854775807

(2)搜索字符串

在字符串中如果我们需要搜索指定子字符串,需要使用到NSString中的5个方法,分别为:localizedStandardRange(of:)、range(of:)、range(of:options:)、range(of:options:range:)和range(of:options:range:locale:)方法。其中,localizedStandardRange(of:)方法是在本地化的字符串A中搜索子字符串,其语法形式如下:

func localizedStandardRange(of str: String) -> NSRange

其中,str用来指定一个子字符串。

【示例1-46】以下将搜索子字符串,并输出子字符串的第一个位置。

import Foundation

var a=NSString(string:"Hello,World")

//搜索子字符串

print(a.localizedStandardRange(of: "lo").location)

print(a.localizedStandardRange(of: "H").location)

print(a.localizedStandardRange(of: "B").location)

运行结果如下:

3

0

9223372036854775807

range(of:)方法的功能是对子字符串进行搜索。其语法形式如下:

func range(of searchString: String) -> NSRange

其中,searchString用来指定一个子字符串。

【示例1-47】以下将搜索子字符串,并输出子字符串的第一个位置。

import Foundation

var a=NSString(string:"Hello,World")

print(a.range(of: "World").location)                                     //搜索子字符串

运行结果如下:

6

range(of:options:)方法和range(of:)方法的功能类似,但是它比range(of:)方法多了一个mask参数,该参数可以用来指定一个选项标记(这个标记可以作为搜索的条件)。其语法形式如下:

func range(of searchString: String, options mask: NSString.CompareOptions = []) -> NSRange

【示例1-48】以下将搜索子字符串,并输出子字符串的第一个位置。

import Foundation

var a=NSString(string:"Hello,World")

print(a.range(of: "LD", options: NSString.CompareOptions.caseInsensitive).location)        //搜索子字符串

运行结果如下:

9

range(of:options:range:)方法和range(of:options:)方法的功能类似,但是它比range(of:options:)方法多了一个rangeOfReceiverToSearch参数,该参数可以设置搜索的范围。其语法形式如下:

func range(of searchString: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToSearch: NSRange) -> NSRange

【示例1-49】以下将搜索子字符串,并输出子字符串的第一个位置。

import Foundation

var a=NSString(string:"Hello,World")

print(a.range(of: "LL", options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(0, 7)).location)

运行结果如下:

2

range(of:options:range:locale:)方法和range(of:options:range:)方法的功能类似,但是它比range(of:options:range:)方法多了一个locale参数,该参数可以语言环境。其语法形式如下:

func range(of searchString: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToSearch: NSRange, locale: Locale?) -> NSRange

【示例1-50】以下将搜索子字符串,并输出子字符串的第一个位置。

import Foundation

var a=NSString(string:"Hello,World")

var l=Locale.current

print(a.range(of: "O,", options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(0, 7), locale: l).location)

运行结果如下:

4

3.枚举字符串

在字符串中,如果我们想要遍历输出字符或者子字符串可以使用循环,当然,也可以使用NSString中提供的两个方法,一个是enumerateLines(_:)方法,另一个是enumerateSubstrings(in:options:using:)方法。

(1)enumerateLines(_:)方法可以枚举出字符串中所有的行,其语法形式如下:

func enumerateLines(_ block: (String, UnsafeMutablePointer<ObjCBool>) -> Void)

其中,block用来指定枚举执行的块函数。

【示例1-51】以下将使用enumerateLines(_:)方法枚举出字符串a中的所有行。

import Foundation

var a=NSString(string:"Hello\nWorld\nSwift\niOS\nXcode\nMac")

//枚举

a.enumerateLines({

    (str:String,obj:UnsafeMutablePointer<ObjCBool>) in

    print(str)

})

运行结果如下:

Hello

World

Swift

iOS

Xcode

Mac

(2)enumerateSubstrings(in:options:using:)方法的功能是在字符串的指定范围内,枚举子字符串,其语法形式如下:

func enumerateSubstrings(in range: NSRange, options opts: NSString.EnumerationOptions = [], using block: (String?, NSRange, NSRange, UnsafeMutablePointer<ObjCBool>) -> Void)

其中,range用来指定范围,opts是一个枚举选项,用来指定子字符串和枚举风格的类型,block用来指定枚举执行的块函数。

【示例1-52】以下将使用enumerateSubstrings(in:options:using:)方法将枚举字符串中的子字符串。

import Foundation

var a=NSString(string:"The hard part isn’t making the decision. It’s living with it.")

//枚举

a.enumerateSubstrings(in: NSMakeRange(0, a.length), options: NSString.EnumerationOptions.byWords, using: {

    (substring:String?, substringRage:NSRange, enclosingRange:NSRange, obj:UnsafeMutablePointer<ObjCBool>) in

    print(substring!)

})

运行结果如下:

The

hard

part

isn’t

making

the

decision

It’s

living

with

it

Swift3.0语言教程查找字符集和子字符串

相关阅读:Swift3.0语言教程比较、判断字符串

© 著作权归作者所有

共有 人打赏支持
大学霸
粉丝 260
博文 880
码字总数 550422
作品 0
东城
程序员
私信 提问
加载中

评论(1)

小码爱大牛
小码爱大牛
你好,我是深圳一家以家居安防为核心的智能家居公司的HR在招聘一位会ffmpeg的Android开发工程师和一位iOS开工程师。不知道您自己或者身边同事朋友有没有在看工作机会的呢?如果感兴趣可以发简历到3288771685@qq.com或者加起QQ。
Swift3.0语言教程替换子字符串

Swift3.0语言教程替换子字符串 Swift3.0语言教程替换子字符串,替换子字符串其实就是将字符串中的子字符串删除,然后再进行添加。为了让这一繁琐的过程变的简单,NSString提供了替换子字符串的...

大学霸
2016/11/14
12
0
Swift3.0语言教程使用URL字符串

Swift3.0语言教程使用URL字符串 Swift3.0语言教程使用URL字符串,和路径一样,URL其实也是字符串,我们可以将这些字符串称为URL字符串。本小节将讲解URL字符串的使用。 1.编码 现在的网络存在...

大学霸
2016/11/18
75
0
Swift3.0语言教程分割字符串与截取字符串

Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组。在NSString中有两个分割字符串...

大学霸
2016/11/16
74
0
Swift3.0语言教程删除字符与处理字符编码

Swift3.0语言教程删除字符与处理字符编码 Swift3.0语言教程删除字符 Swift3.0语言教程删除字符与处理字符编码,在字符串中,如果开发者有不需要使用的字符,就可以将这些字符删除。在NSStrin...

大学霸
2016/11/17
86
1
Swift3.0语言教程组合字符串

Swift3.0语言教程组合字符串 Swift3.0语言教程组合字符串,当开发者想要将已经存在的字符串进行组合,形成一个新的字符串,可以使用NSString中的两个方法,分别为appending(:)和padding(toL...

大学霸
2016/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

漏洞防御与修复工作

漏洞管理工作是企业安全建设必不可少的一环,在风险管理工作中,漏洞管理能够防患于未然,企业对漏洞管理有着广泛的基础建设和实践经验。但随着攻防技术的发展,传统漏洞管理的安全技术和管理...

linuxprobe16
45分钟前
1
0
MicroPython技术及应用前景

1 Micropython技术是什么? MicroPython极精简高效的实现了Python3语言。它包含Python标准库的一小部分,能在单片机和受限环境中运行。 1.1 MicroPython发展 由剑桥大学的理论物理学家乔治....

bodasisiter
51分钟前
3
0
跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

本节详细讲解使用Hystrix的通用方式。 简介 Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要...

周立_ITMuch
今天
1
0
🛠️Hanjst/汉吉斯特更新加JavaScript运行时优化等

这是 Hanjst/汉吉斯特 发布以来的首个主要升级更新版本。这次的主要升级更新的内容包括移除HTML Comments注释行, 优化在 Hanjst include模板文件时的JavaScript运行时环境。 Hanjst 在设计和...

wadelau
今天
2
0
OSChina 周六乱弹 —— 舔狗是没有好下场的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听什么# #今天听这个# 分享 Nirvana 的歌曲《Smells Like Teen Spi...》 《Smells Like Teen Spi...》- Nirvana 手机党少...

小小编辑
今天
571
14

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部