首页 > 学院 > 开发设计 > 正文

[swift]4.0原生字符串

2019-11-06 07:45:41
字体:
来源:转载
供稿:网友

4.1字符 1.格式: 变量关键字和常量关键字 变量 : Character = 字符值。 注意点:字符值 必须用双引号括起来, 必须是一个字符。 例: var ch :Character = “c”// 字符值 必须用双引号,并且是一个字符 PRintln(“ch=(ch)”) 运行结果 ch=c 2.字符串和字符的关系: 字符串是由N个字符组成的,即字符串是字符的集合。 例: var str = “ABC”//字符串 “ABC” 是有 三个字符组成的分别是 :字符”A”,字符“B”,字符”C” 4.2创建字符串 1.Swift支持String字符串类型和Charater字符类型来提供一个快速的、支持Unicode编码的方式来处理字符操作。 Swift的String类型和Objective-C的NSString无缝接合,所有NSString的API对String同样适用。但是String变量总是可变长的,而在Objective-C中变长字符串是NSMutableString。 2.Swift字符串是传值类型,在传入函数参数或者赋值时,它是新建一个原来字符串的拷贝,而不是分配一个指针,新建字符串和原来的字符串并不储存在同一个空间。区别于Objective-C中NSString,后者是传址类型,即相当于一个指针。 Character字符类型同样用双引号把字符括起来,每一个字符代表一个独立的Unicode字符,字符串相当于Character的一个集合。 字符串和字符之间可以两两连接,使用最简单的运算符 +,+=同样适用。 3.创建空字符串 /定义一个空字符串第一种方法: var str1=”“定义一个空字符串 第二种方法: var str2 = String() 运行结果 str1= str2= 4.判断字符串是否为空 (isEmpty) 判断字符串是否为空: var str3:String = “”if str3.isEmpty { //isEmpty是字符串的一个属性,判断字符串是否为空 println(“str3的值是空”) } else{ println(“str3的值不为空”) }

运行结果 str3的值是空 5.字符串的转义符 /0 空字符 / 反斜杠/ t 制表符/n 换行符/r 回车符 /” 双引号/’ 单引号 例: 换行符: var strA = “Hello World /n 1”// /n是换行符 println(“strA=(strA)”) 引号: var strB = “/”双引号”// /” 是代表双引号 println(“strB=(strB)”) 单引号: var strC = “/’单引号”// /’ 代表单引号 println(“strC=(strC)”) 运行结果 strA=Hello World 1 strB=”双引号 strC=’单引号 4.3字符串拼接 1.字符和字符串拼接,用+直接来拼接,组成新的字符串 (和字符串拼接用法一直) 例:import Foundation var C:Character = “S”//定义C 是字符变量var str = C + ” hello” println(str ) 运行结果 S hello 2.字符串变量和常量用+或 +=来拼接 组成新的字符串 例: 多个字符串变量拼接 用 + 来拼接 var str4 = “hello” var str5 = ” swift” var str6 = str4+str5 //字符串变量拼接 println(“str6=(str6)”) 字符串变量和常量用+或 +=来拼接 var str7=”hello ” str7 += “swift”//字符串变量和字符常量拼接可以用+= 拼接 println(“str7=(str7)”) 运行结果 str6=hello swift str7=hello swift 4.字符串和占位变量 组成新的字符串 var a = 3//定义一个整形变量 var strQ = “a = (a)”// 字符串和占外变量,组成新的变量(占外变量表示(变量)) println(“(strQ)”) 运行结果 a = 3 4.4字符串插入、删除和替换 1.对应可变字符串可以插入、删除和替换,String提供了几个方法可以帮助实现这些操作。这些方法如下: splice(_:atIndex:)。在索引位置插入字符串。 insert(_:atIndex:)。在索引位置插入字符。 removeAtIndex(_:)。在索引位置删除字符。 removeRange(_:)。删除指定范围内的字符串。 replaceRange(_:,with: String) 。使用字符串或字符替换指定范围内的字符串。   代码: var str =”Swift” print(“原始字符串:(str)”) str.splice(“Objective-Cand “.characters, atIndex: str.startIndex) str.insert(“.”,atIndex: str.endIndex) str.removeAtIndex(str.endIndex.predecessor()) var startIndex =str.startIndex var range =startIndex…endIndex str.removeRange(range) startIndex =str.startIndex str.replaceRange(range,with: “C++”) print(“替换范围后:(str)”) 输出结果: 原始字符串:Swift 插入字符串后:Objective-C and Swift 插入.字符后:Objective-Cand Swift. 删除.字符后:Objective-Cand Swift 删除范围后:C and Swift 替换范围后:C++ and Swift 4.5字符串比较 1.字符串比较:OC: NSString *str1 = @”abc”; NSString *str2 = @”abc”; if ([str1 compare:str2] == NSOrderedSame) else { NSLog(@”不相等”); } { NSLog(@”相等”); } else { NSLog(@”不相等”); } Swift:(== / != / >= / <=), 和C语言的strcmp一样是逐个比较 var str4 = “abc”; var str5 = “abc”; if str4 == str5 { print(“相等”); } else { print(“不相等”); } var str6 = “abd”; var str7 = “abc”; else { print(“不大于等于”); } 4.6大小和相等比较 字符串比较可以分为:不区分大小写比较、区分大小写比较以及本地化比较三部分。首先我们来看不区分大小写比较,不区分大小写比较顾名思义就是不区分字符串中字母的大小写,即A和a相同。 1.不区分大小写比较 在NSString中使用caseInsensitiveCompare(_:)方法实现这一功能,其语法形式如下: func caseInsensitiveCompare(_ string: String) -> ComparisonResult 其中,string用来指定一个比较的字符串。该方法的返回值为ComparisonResult类型 。ComparisonResult是一个枚举类型,包含了以下3个成员: q orderedAscending(-1):左操作数小于右操作数。 q orderedSame(0):两个操作数相等。 q orderedDescending(1):左操作数大于右操作数。 2.区分大小写比较 有不区分大小写比较,相对的就有区分大小写比较。在NSString中提供了4种方法实现了这种比较, 分别为:compare(:)、compare(:options:)、compare(:options:range:)和compare(:options:range:locale:)方法。 (1)compare(_:)方法就是用来比较字符串的,它需要区分字符串的大小写,其语法形式如下: func compare(_ string: String) -> ComparisonResult 其中,string用来指定一个比较的字符串。 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 (3)compare(:options:range:)方法和compare(:options:)方法的功能类似,但是它比compare(_:options:)方法多了一个rangeOfReceiverToCompare参数,此参数可以用来对比较范围进行设置。其语法形式如下: func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange) -> ComparisonResult (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 3.本地化比较 对于本地化比较在NSString中提供了3种方法, 分别为: localizedCaseInsensitiveCompare(:)、localizedStandardCompare(:)和localizedCompare(_:)。 (1)localizedCaseInsensitiveCompare(_:)方法为不区分大小写、本地化比较字符串,其语法形式如下: func localizedCompare(_ string: String) -> ComparisonResult 其中,string用来指定一个比较的字符串。 (2)localizedStandardCompare(_:)方法为本地化标准字符串的比较,其语法形式如下: func localizedStandardCompare(_ string: String) -> ComparisonResult 其中,string用来指定一个比较的字符串。 localizedCompare(_:)方法是区分大小写、本地化比较字符串,其语法形式如下: func localizedCompare(_ string: String) -> ComparisonResult 其中,string用来指定一个比较的字符串。 4.判断字符串 在NSString中提供了3种对字符串判断的方法, 分别为:hasprefix(:)、hasSuffix(:)和isEqual(to:)方法。 (1)hasPrefix(_:)方法用来判断字符串是否以某一指定字符串开头,其语法形式如下: func hasPrefix(_ str: String) -> Bool 其中,str用来指定一个字符串。 (2)hasSuffix(:)方法正好和hasPrefix(:)方法相反,它是用来判断字符串是否以某一指定字符串结尾的,其语法形式如下: func hasSuffix(_ str: String) -> Bool 其中,str用来指定一个字符串。 (3)isEqual(to:)方法是用来判断字符串是否相等的,其语法形式如下: func isEqual(to aString: String) -> Bool 其中,aString用来指定字符串。 4.7前缀和后缀比较 1.前缀/后缀相等 通过调用字符串的 hasPrefix/hasSuffix 方法来检查字符串是否拥有特定前缀/后缀。两个方法均需要以字符串作为参数传入并传出 Boolean 值。两个方法均执行基本字符串和前缀/后缀字符串之间逐个字符的比较操作。 下面的例子以一个字符串数组表示莎士比亚话剧 罗密欧与朱丽叶 中前两场的场景位置: let romeoAndJuliet = [ “Act 1 Scene 1: Verona,A public place”, “Act 1 Scene 2: Capulet’s mansion”, “Act 1 Scene 3: A room in Capulet’s mansion”, “Act 1 Scene 4: A street outside Capulet’s mansion”, “Act 1 Scene 5: The Great Hall in Capulet’s mansion”, “Act 2 Scene 1: Outside Capulet’s mansion”, “Act 2 Scene 2: Capulet’s orchard”, “Act 2 Scene 3: Outside Friar Lawrence’s cell”, “Act 2 Scene 4: A street in Verona”, “Act 2 Scene 5: Capulet’s mansion”, “Act 2 Scene 6: Friar Lawrence’s cell” ]


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表