Swift3.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语言教程比较、判断字符串
Swift3.0语言教程查找字符集和子字符串的更多相关文章
- Swift3.0语言教程获取字符
Swift3.0语言教程获取字符 Swift3.0语言教程获取字符,在字符串中获取某一下标位置(下标索引)处的字符是很常见的功能,在NSString中使用character(at:)方法实现,其语法形 ...
- Swift3.0语言教程删除字符与处理字符编码
Swift3.0语言教程删除字符与处理字符编码 Swift3.0语言教程删除字符 Swift3.0语言教程删除字符与处理字符编码,在字符串中,如果开发者有不需要使用的字符,就可以将这些字符删除.在NS ...
- Swift3.0语言教程替换子字符串
Swift3.0语言教程替换子字符串 Swift3.0语言教程替换子字符串,替换子字符串其实就是将字符串中的子字符串删除,然后再进行添加.为了让这一繁琐的过程变的简单,NSString提供了替换子字符 ...
- Swift3.0语言教程使用路径字符串
Swift3.0语言教程使用路径字符串 Swift3.0语言教程使用路径字符串,路径其实是字符串的一种,我们称为路径字符串.本小节将讲解如何使用路径字符串. 1.组合路径 开发者可以将数组快速的组合成 ...
- Swift3.0语言教程字符串与URL的数据转换与自由转换
Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...
- Swift3.0语言教程字符串与文件的数据转换
Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中.当然,开发者也可以将写入的内容进 ...
- Swift3.0语言教程分割字符串与截取字符串
Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...
- Swift3.0语言教程字符串大小写转化
Swift3.0语言教程字符串大小写转化 Swift3.0语言教程字符串大小写转化,在字符串中,字符串的格式是很重要的,例如首字母大写,全部大写以及全部小写等.当字符串中字符很多时,通过人为一个一个的 ...
- Swift3.0语言教程组合字符串
Swift3.0语言教程组合字符串 Swift3.0语言教程组合字符串,当开发者想要将已经存在的字符串进行组合,形成一个新的字符串,可以使用NSString中的两个方法,分别为appending(_: ...
随机推荐
- 【leetcode】Excel Sheet Column Title & Excel Sheet Column Number (easy)
Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...
- 【编程题目】有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配...
37.(字符串)有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配,则两个字符串可以联接,问这 n 个字符串最多可以连成一个多长的字符串,如果出现循环, ...
- 【网络】VPN
VPN: 来自百度百科 虚拟专用网络的功能是:在公用网络上建立专用网络,进行加密通讯.在企业网络中有广泛应用.VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问.VPN有多种分类方式,主要 ...
- 地图API文档
目录 腾讯地图API 2 1.API概览... 2 1.1 WebService API(官网注明是beta版本,可能不稳定,慎用):... 2 1.2 URL API:... 2 1.3 静态图AP ...
- java课后作业 弹出窗口求两个数的加减乘除
//计算2个数的加减乘除 谷伟华 2015/10/6package jisuan; import javax.swing.JOptionPane; public class Jiasuan { pub ...
- 导出 SQL SERVER 表中数据为脚本
ALTER PROCEDURE [dbo].[Usp_OutputData] @tablename sysname, @outputIdentitycolumn int AS declare @col ...
- [Android Pro] Normal Permissions
As of API level 23, the following permissions are classified as PROTECTION_NORMAL: ACCESS_LOCATION_E ...
- 解决java.lang.SecurityException: Access to default session denied
原先使用的代码如下: Session session = Session.getDefaultInstance(properties, null); 后来把代码修改为: Session session ...
- JVM_Bind:8080 的解决办法【131031】
出错情况:运行 Tomcat 时报错 含义:8080 位置显示的端口被其他进程占用 解决方法: 方法1: 开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID ...
- 使用getopt函数对windows命令行程序进行参数解析
getopt()是libc的标准函数,很多语言中都能找到它的移植版本. // -b -p "c:\input" -o "e:\test\output" bool ...