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语言教程比较、判断字符串

Swift3.0语言教程查找字符集和子字符串的更多相关文章

  1. Swift3.0语言教程获取字符

    Swift3.0语言教程获取字符 Swift3.0语言教程获取字符,在字符串中获取某一下标位置(下标索引)处的字符是很常见的功能,在NSString中使用character(at:)方法实现,其语法形 ...

  2. Swift3.0语言教程删除字符与处理字符编码

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

  3. Swift3.0语言教程替换子字符串

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

  4. Swift3.0语言教程使用路径字符串

    Swift3.0语言教程使用路径字符串 Swift3.0语言教程使用路径字符串,路径其实是字符串的一种,我们称为路径字符串.本小节将讲解如何使用路径字符串. 1.组合路径 开发者可以将数组快速的组合成 ...

  5. Swift3.0语言教程字符串与URL的数据转换与自由转换

    Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...

  6. Swift3.0语言教程字符串与文件的数据转换

    Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中.当然,开发者也可以将写入的内容进 ...

  7. Swift3.0语言教程分割字符串与截取字符串

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

  8. Swift3.0语言教程字符串大小写转化

    Swift3.0语言教程字符串大小写转化 Swift3.0语言教程字符串大小写转化,在字符串中,字符串的格式是很重要的,例如首字母大写,全部大写以及全部小写等.当字符串中字符很多时,通过人为一个一个的 ...

  9. Swift3.0语言教程组合字符串

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

随机推荐

  1. 解决SQL Server的cannot resolve the collation conflict问题

    当没有牵涉到两个不同的数据库时,出现以上错误.   Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" ...

  2. September 6th 2016 Week 37th Tuesday

    I only wish to face the sea, with spring flowers blossoming. 我只愿面朝大海,春暖花开. That scenery is beautiful ...

  3. August 26th 2016 Week 35th Friday

    It always seems impossible until it's done. 在事情未完成之前,一切都看似不可能. When I was young, once I had to lift ...

  4. LinkIssue: Error 'LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or cor

    参考:http://blog.csdn.net/junjiehe/article/details/16888197 使用VisualStudio 编译链接中可能出现如下错误: LINK : fatal ...

  5. JS判断是否为IE浏览器 包含了IE11

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  6. hdu5878(枚举,打表)

    题目链接:hdu5878 题意:到一行输入t,表示下面有t组数据,然后下面t行每行输入一个数n; 定义x==2^a*3^b*5^c*7^d(a, b, c, d为自然数,x不大于1e+9): 要求对于 ...

  7. Clr Via C#读书笔记---线程基础

    趣闻:我是一个线程:http://kb.cnblogs.com/page/542462/ 进程与线程 进程:应用程序的一个实例使用的资源的集合.每个进程都被赋予了一个虚拟地址空间. 线程:对CPU进行 ...

  8. Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

    1.开发工具使用: MyEclipse或Eclipse,数据库使用Oracle.需要用到的软件有Zookeeper(注册中心),Tomcat(Web容器)和Maven(包管理). 2.初始环境配置: ...

  9. MYSQL中'TYPE=MyISAM'错误的解决方案

    create 语句后面的TYPE=MyISAM TYPE=MyISAM 和 ENGINE=MyISAM 都是设置数据库存储引擎的语句 ,(老版本的MySQL使用TYPE而不是ENGINE(例如,TYP ...

  10. settimeout,cleartimeout的使用分析

    设置时间的定时轮回执行,大家想到的js也就是settimeout这个方法,这个方法确实能够实现定时反复执行的功能,clearttimeout这是清理或者是暂停轮回执行的情况.可是发现clearttim ...