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语言教程获取字符串编码与哈希地址

时间: 2024-08-09 03:54:20

Swift3.0语言教程比较、判断字符串的相关文章

Swift3.0语言教程获取C字符串

Swift3.0语言教程获取C字符串 Swift3.0语言教程获取C字符串,为了让Swift和C语言可以实现很好的交互,开发者可以使用NSString的cString(using:)方法在指定编码格式后,获取C字符串,其语法形式如下: func cString(using: UInt) 其中,using用来指定编码格式. [示例1-19]以下将使用cString(using:)方法获取C字符串. import Foundation var str1=NSString(string:"Hello&

Swift3.0语言教程获取字符串编码与哈希地址

Swift3.0语言教程获取字符串编码与哈希地址 Swift3.0语言教程获取字符串编码与哈希地址,以下将讲解字符串中其它内容的获取方法. 1.获取字符串编码 在NSString中可以使用2个属性获取字符串编码,分别为availableStringEncodings属性和defaultCStringEncoding属性. (1)availableStringEncodings属性可以用来获取NSString可用的字符串编码.其语法形式如下: class var availableStringEn

Swift3.0语言教程使用指针创建和初始化字符串

Swift3.0语言教程使用指针创建和初始化字符串 Swift3.0语言教程使用指针创建和初始化字符串苹果的Swift团队花了不少功夫来支持C的一些基础特性.C语言中为我们提供了指针,Swift也不例外,开发者可以使用指针去创建和初始化字符串. (1)在NSString中init(bytes:length:encoding:)方法可以从给定字符串按照指定获取方向,得到指定个数的字符,然后使用这些字符创建和初始化字符串.其语法形式如下: convenience init?(bytes: Unsaf

Swift2.0语言教程之函数的返回值与函数类型

Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有一个返回值的函数 开发者希望在函数中返回某一数据类型的值,必须要在函数声明定义时为函数设定一个返回的数据类型,并使用return语句进行返回.其中,return语句的一般表示形式如下: return 表达式 其中,表达式可以是符合Swift标准的任意表达式.而具有返回值的函数声明定义形式如下: fu

Swift2.0语言教程之类的嵌套与可选链接

Swift2.0语言教程之类的嵌套与可选链接 Swift2.0语言类的嵌套 在一个类中可以嵌套一个或者多个类.它们的嵌套形式也是不同的,大致分为了两种:直接嵌套和多次嵌套.下面依次讲解这两种方式. Swift2.0语言的直接嵌套 当一个类或者多个类直接嵌套在另外一个类,这时就构成直接嵌套,如图8.6所示. 图8.6  类的嵌套 在图8.6中,类2.类3和类4都是直接嵌套在类1中.对于这种情况,使用类1的实例属性和方法,语法形式如下: 类1().属性 类1().方法 使用类1的类型属性和方法的形式

Swift2.0语言教程之类的属性

Swift2.0语言教程之类的属性 类 虽然函数可以简化代码,但是当一个程序中出现成百上千的函数和变量时,代码还是会显得很混乱.为此,人们又引入了新的类型--类.它是人们构建代码所用的一种通用.灵活的构造方式.本章将主要详细讲解类的使用. Swift2.0语言的类与对象 类是一种新的数据类型,类似于生活中犬类.猫类等等.而对象则是将这个抽象的类进行了具体化.例如,在犬类中,有哈士奇,金毛等等,这些就是犬类的具体化,即对象.本节将讲解类的创建以及如何将类进行具体化(即实例化)为对象. Swift2

Swift2.0语言教程之闭包

Swift2.0语言教程之闭包 Swift2.0语言闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用.Swift中的闭包与C和Objective-C中的代码块(blocks)以及其他一些编程语言中的Lambda函数比较相似.在本章中所讲的函数其实就是特殊的闭包.本节主要讲解关于闭包的基本使用. Swift2.0语言闭包表达式 闭包表达式是一种利用简洁语法构建内联(内联类似与C语言中的宏定义)闭包的方式.以下这个代码是对两个字符串的比较. import Foundation //判断两个字

Swift2.0语言教程之下标脚本

Swift2.0语言教程之下标脚本 下标脚本 下标脚本是訪问对象.集合或者序列的高速方式.开发人员不须要调用实例特定的赋值和訪问方法,就能够直接訪问所须要的数值. 比如在数组中,能够直接使用下标去訪问或者改动数组中的某一个元素. 代码例如以下: import Foundation var array=["One","Two","Three","Four","Five"] print("訪问元素:\

Swift2.0语言教程之类的方法

Swift2.0语言教程之类的方法 Swift2.0语言的方法 方法其实就是函数,只不过它被定义在了类中.在Swift中,根据被使用的方式不同,方法分为了实例方法和类型方法两种.这两种方法的定义也和Objective-C是不同的.本节依次讲解这两种方法. Swift2.0语言的实例方法 实例方法被定义在类中,但是由类的实例调用.所以,这类方法被称为实例方法.实例方法和函数一样,分为了不带参数和带参数两种.以下依次讲解这两种方法的使用. 1.不带参数的实例方法 不带参数的实例方法定义和函数的是一样