Swift3.0语言教程比较、判断字符串
Swift3.0语言教程比较、判断字符串
Swift3.0语言教程比较、判断字符串,在一个程序中字符串很多时,常常会做的操作就是对这些字符串进行比较和判断。本小节将讲解这些内容。
1.不区分大小写比较
字符串比较可以分为:不区分大小写比较、区分大小写比较以及本地化比较三部分。首先我们来看不区分大小写比较,不区分大小写比较顾名思义就是不区分字符串中字母的大小写,即A和a相同。在NSString中使用caseInsensitiveCompare(_:)方法实现这一功能,其语法形式如下:
func caseInsensitiveCompare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。该方法的返回值为ComparisonResult类型。ComparisonResult是一个枚举类型,包含了以下3个成员:
q orderedAscending(-1):左操作数小于右操作数。
q orderedSame(0):两个操作数相等。
q orderedDescending(1):左操作数大于右操作数。
【示例1-29】以下将使用caseInsensitiveCompare(_:)方法对字符串进行比较。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Swift")
//比较字符串
print(a.caseInsensitiveCompare(b as String).rawValue)
print(a.caseInsensitiveCompare(c as String).rawValue)
print(c.caseInsensitiveCompare(a as String).rawValue)
运行结果如下:
0
-1
1
2.区分大小写比较
有不区分大小写比较,相对的就有区分大小写比较。在NSString中提供了4种方法实现了这种比较,分别为compare(_:)、compare(_:options:)、compare(_:options:range:)和compare(_:options:range:locale:)方法。
(1)compare(_:)方法就是用来比较字符串的,它需要区分字符串的大小写,其语法形式如下:
func compare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。
【示例1-30】以下将使用compare(_:)方法实现字符串的比较。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Hello")
//比较字符串
print(a.compare(b as String).rawValue)
print(a.compare(c as String).rawValue)
print(b.compare(a as String).rawValue)
运行结果如下:
-1
0
1
(2)compare(_:options:)方法和compare(_:)方法实现的功能类似,它是对字符串进行比较,但是它比compare(_:)方法多了一个mask参数。该参数可以用来指定一个选项标记(这个标记可以作为字符串比较的条件)。在编程中,mask参数最常被设置为以下5种:
q caseInsensitive:不区分大小写比较
q literal:区分大小写比较
q backwards:从字符串末尾开始搜索
q anchored:搜索限制范围的字符串
q numeric:按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7.txt < Foo25.txt
compare(_:options:)方法的语法形式如下:
func compare(_ string: String, options mask: NSString.CompareOptions = []) -> ComparisonResul
【示例1-31】以下将使用compare(_:options:)方法实现对字符串的比较。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
print(a.compare(b as String, options: NSString.CompareOptions.caseInsensitive).rawValue) //比较字符串
运行结果如下:
0
(3)compare(_:options:range:)方法和compare(_:options:)方法的功能类似,但是它比compare(_:options:)方法多了一个rangeOfReceiverToCompare参数,此参数可以用来对比较范围进行设置。其语法形式如下:
func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange) -> ComparisonResult
【示例1-32】以下将使用compare(_:options:range:)方法对字符串进行比较。
import Foundation
var a=NSString(string:"HEllo")
var b=NSString(string:"Swift")
print(a.compare(b as String, options: NSString.CompareOptions.caseInsensitive,range: NSMakeRange(1, 3)).rawValue) //比较字符串
运行结果如下:
-1
(4)compare(_:options:range:locale:)方法和compare(_:options:range:)方法的功能类似,但是它比compare(_:options:range:)方法多了一个locale参数,此参数可以用来设置语言环境。其语法形式如下:
func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange, locale: AnyObject?) -> ComparisonResult
【示例1-33】以下将使用compare(_:options:range:locale:)方法对字符串进行比较。
import Foundation
var a=NSString(string:"a")
var b=NSString(string:"ä")
var l=Locale.current
print(a.compare(b as String, options: NSString.CompareOptions.caseInsensitive, range: NSMakeRange(0, 1), locale: l).rawValue)
运行结果如下:
-1
3.本地化比较
对于本地化比较在NSString中提供了3种方法,分别为:localizedCaseInsensitiveCompare(_:)、localizedStandardCompare(_:)和localizedCompare(_:)。
(1)localizedCaseInsensitiveCompare(_:)方法为不区分大小写、本地化比较字符串,其语法形式如下:
func localizedCompare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。
【示例1-34】以下将使用localizedCaseInsensitiveCompare(_:)方法比较字符串。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Swift")
//比较字符串
print(a.localizedCaseInsensitiveCompare(b as String).rawValue)
print(a.localizedCaseInsensitiveCompare(c as String).rawValue)
print(c.localizedCaseInsensitiveCompare(a as String).rawValue)
运行结果如下:
0
-1
1
(2)localizedStandardCompare(_:)方法为本地化标准字符串的比较,其语法形式如下:
func localizedStandardCompare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。
【示例1-35】以下将使用localizedStandardCompare(_:)方法实现字符串的比较。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
print(a.localizedStandardCompare(b as String).rawValue) //比较字符串
运行结果如下:
1
(3)localizedCompare(_:)方法是区分大小写、本地化比较字符串,其语法形式如下:
func localizedCompare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。
【示例1-36】以下将使用localizedCompare(_:)方法实现对字符串的比较。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Hello")
print(a.localizedCompare(b as String).rawValue)
print(a.localizedCompare(c as String).rawValue)
print(b.localizedCompare(a as String).rawValue)
运行结果如下:
1
0
-1
4.判断字符串
在NSString中提供了3种对字符串判断的方法,分别为hasPrefix(_:)、hasSuffix(_:)和isEqual(to:)方法。
(1)hasPrefix(_:)方法用来判断字符串是否以某一指定字符串开头,其语法形式如下:
func hasPrefix(_ str: String) -> Bool
其中,str用来指定一个字符串。
【示例1-37】以下将判断字符串a是否以"H"、"Hel"和"Hele"开头。
import Foundation
var a=NSString(string:"Hello")
//判断字符串a是否以"H"开头
if(a.hasPrefix("H")){
print("a字符串是以H开头的")
}else{
print("a字符串不是以H开头的")
}
//判断字符串a是否以"Hel"开头
if(a.hasPrefix("Hel")){
print("a字符串是以Hel开头的")
}else{
print("a字符串不是以Hel开头的")
}
//判断字符串a是否以"Hele"开头
if(a.hasPrefix("Hele")){
print("a字符串是以Hele开头的")
}else{
print("a字符串不是以Hele开头的")
}
运行结果如下:
a字符串是以H开头的
a字符串是以Hel开头的
a字符串不是以Hele开头的
(2)hasSuffix(_:)方法正好和hasPrefix(_:)方法相反,它是用来判断字符串是否以某一指定字符串结尾的,其语法形式如下:
func hasSuffix(_ str: String) -> Bool
其中,str用来指定一个字符串。
【示例1-38】以下将判断字符串a是否以"o"、"Hello"、"allo"结尾。
import Foundation
var a=NSString(string:"Hello")
//判断字符串a是否以"o"结尾。
if(a.hasSuffix("o")){
print("a字符串是以o结尾的")
}else{
print("a字符串不是以o结尾的")
}
//判断字符串a是否以"Hello"结尾。
if(a.hasSuffix("Hello")){
print("a字符串是以Hello结尾的")
}else{
print("a字符串不是以Hello结尾的")
}
//判断字符串a是否以"allo"结尾。
if(a.hasSuffix("allo")){
print("a字符串是以allo结尾的")
}else{
print("a字符串不是以allo结尾的")
}
运行结果如下:
a字符串是以o结尾的
a字符串是以Hello结尾的
a字符串不是以allo结尾的
(3)isEqual(to:)方法是用来判断字符串是否相等的,其语法形式如下:
func isEqual(to aString: String) -> Bool
其中,aString用来指定字符串。
【示例1-39】以下将判断字符串是否相等。
import Foundation
var a=NSString(string:"Hello")
var b=NSString(string:"hello")
var c=NSString(string:"Swift")
var d=NSString(string:"Hello")
//判断字符串a和b是否相等
if(a.isEqual(to: b as String)){
print("a、b两个字符串相等")
}else{
print("a、b两个字符串不相等")
}
//判断字符串a和c是否相等
if(a.isEqual(to: c as String)){
print("a、c两个字符串相等")
}else{
print("a、c两个字符串不相等")
}
//判断字符串a和d是否相等
if(a.isEqual(to: d as String)){
print("a、d两个字符串相等")
}else{
print("a、d两个字符串不相等")
}
运行结果如下:
a、b两个字符串不相等
a、c两个字符串不相等
a、d两个字符串相等
相关阅读:Swift3.0语言教程获取字符串编码与哈希地址
Swift3.0语言教程比较、判断字符串的更多相关文章
- Swift3.0语言教程使用路径字符串
Swift3.0语言教程使用路径字符串 Swift3.0语言教程使用路径字符串,路径其实是字符串的一种,我们称为路径字符串.本小节将讲解如何使用路径字符串. 1.组合路径 开发者可以将数组快速的组合成 ...
- Swift3.0语言教程使用URL字符串
Swift3.0语言教程使用URL字符串 Swift3.0语言教程使用URL字符串,和路径一样,URL其实也是字符串,我们可以将这些字符串称为URL字符串.本小节将讲解URL字符串的使用. 1.编码 ...
- Swift3.0语言教程替换子字符串
Swift3.0语言教程替换子字符串 Swift3.0语言教程替换子字符串,替换子字符串其实就是将字符串中的子字符串删除,然后再进行添加.为了让这一繁琐的过程变的简单,NSString提供了替换子字符 ...
- Swift3.0语言教程获取C字符串
Swift3.0语言教程获取C字符串 Swift3.0语言教程获取C字符串,为了让Swift和C语言可以实现很好的交互,开发者可以使用NSString的cString(using:)方法在指定编码格式 ...
- Swift3.0语言教程字符串转换为数字值
Swift3.0语言教程字符串转换为数字值 Swift3.0语言教程字符串转换为数字值,在NSString中,开发者可以将字符串转换为数字值,通过这些数字值可以实现一些功能,如加法运算.减法运算等.数 ...
- Swift3.0语言教程组合字符串
Swift3.0语言教程组合字符串 Swift3.0语言教程组合字符串,当开发者想要将已经存在的字符串进行组合,形成一个新的字符串,可以使用NSString中的两个方法,分别为appending(_: ...
- Swift3.0语言教程查找字符集和子字符串
Swift3.0语言教程查找字符集和子字符串 Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法.以下我们将讲解3种查找字符集和子字 ...
- Swift3.0语言教程字符串与URL的数据转换与自由转换
Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...
- Swift3.0语言教程字符串与文件的数据转换
Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中.当然,开发者也可以将写入的内容进 ...
随机推荐
- 【编程题目】在从 1 到 n 的正数中 1 出现的次数
30.在从 1 到 n 的正数中 1 出现的次数(数组)题目:输入一个整数 n,求从 1 到 n 这 n 个整数的十进制表示中 1 出现的次数.例如输入 12,从 1 到 12 这些整数中包含 1 的 ...
- 【matlab】随意记录
v = -0.5:0.05:0.5; [x, y] = meshgrid(v); z = sqrt(1.0 - x.^2 - y.^2); mesh(x,y,z); 画一个球的一部分: 2. 求cel ...
- 【网络】VPN
VPN: 来自百度百科 虚拟专用网络的功能是:在公用网络上建立专用网络,进行加密通讯.在企业网络中有广泛应用.VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问.VPN有多种分类方式,主要 ...
- 【Bochs 官方手册翻译】 第一章 Bochs介绍
Bochs 是一个可以完全模拟 Intel x86 计算机的虚拟机系统.它包含了 Intel x86 CPU 仿真.常见设备仿真.以及定制 BIOS.Bochs 可以虚拟多种不同类型的 x86 CPU ...
- centos7 php7 httpd
安装php之前,要先安装几个 1.下载php源码:http://cn2.php.net/distributions/php-7.0.6.tar.gz. 2.然后使用命令:tar -zxvf php-7 ...
- Java RSA 密钥生成工具
MAC openssl: RSA加解密 第一条命令是生成密钥长度为1024的密钥: 第二条命令是从中生成公钥: 第三条命令是使用pkcs8编码密钥为私钥 http://blog.csdn.net/ch ...
- 指针和引用的区别(c/c++)
http://blog.csdn.net/thisispan/article/details/7456169 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用 ...
- JAVA作业)01
一,四则运算 (一) 设计思想 使用Scanner类读取运行时用户输入数据,然后进行数据类型转换,完成四则运算之后利用输出类输出. (二) 流程图 (三)程序代码 //Zhangxiaochen ...
- web.config详解 -- asp.net夜话之十一
1.配置文件节点说明 1.1 <appSettings>节点 1.2 <connectionStrings>节点 1.3 <compilation> ...
- Delphi之DLL知识学习1---什么是DLL
DLL(动态链接库)是程序模块,它包括代码.数据或资源,能够被其他的Windows 应用程序共享.DLL的主要特点之一是应用程序可以在运行时调入代码执行,而不是在编译时链接代码,因此,多个应用程序可以 ...