zoukankan      html  css  js  c++  java
  • 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语言教程获取字符串编码与哈希地址

  • 相关阅读:
    C#深复制和浅复制
    C#程序设计六大原则记录
    C#异步
    线程同步
    线程基础
    委托,事件
    XmlSerializer
    C#接口
    C#封装
    C#多态
  • 原文地址:https://www.cnblogs.com/daxueba-ITdaren/p/6053510.html
Copyright © 2011-2022 走看看