首页 > 代码库 > swift 初见-4运算符与字符串操作

swift 初见-4运算符与字符串操作

// Playground - noun: a place where people can playimport UIKit//import Foundationvar str = "Hello, playground"//swift 新运算符 Nil Coalescing Operator  (nil聚合运算符)  二元运算符  它是为可选型数据来设计的,通常用在解包的过程中// 示例:  a??b ---> a!=nil? a! : b (a不为空就解包,否则返回默认值b)  a必须是optional类型 ,b类型必须和a解包后的类型是一致的// 实例:var name:String?name="andy"// 需要注意的时 name != nil 中!=与前后都有个空格否则会报错的,假如没有空格 name!变成了解包 // 无空格时:error: type ‘()‘ does not conform to protocol ‘BooleanType‘if name != nil{    println("hello,\(name)")    // 这里加!号,前面讲过的    println("hello"+String(name!))}else{    println("hello,kim")}// 简化if代码-1:// 开发技巧:在元素前后分别留出一个空格间隔前后代码或符号let myName:String=name != nil ? name! : "kim"println("hello"+myName)// 简化if代码-2let myNames:String=name ?? "kim"println("hello"+String(myNames)) //这样就保证了myNames始终是个有意义的值// 区间运算符 Range Operator 常用forin循环连用// 闭区间 [a,b] ---->a...b  //三点// 前闭后开 [a,b)---->a..<b //两点for indexs in 1...10{    indexs // indexs=10   error:error: cannot assign to ‘let‘ value ‘indexs‘ ,默认常量}for indexs in 1..<10{    indexs    // indexs=10   error:error: cannot assign to ‘let‘ value ‘indexs‘ ,默认常量}//Logical Operator// !a a&&b  a||b     注意 a & b , a | b这是位运算,不是逻辑运算// String Mutability // var 声明的都是可变字符串 ,let 为不可变// 遍历字符串for c in str{    println(c) //c为Character型}// Character 类型var ch:Character="!"  //写个字符会报错str.append(ch)println(str) // str +=ch  //这样是不能的,类型不匹配 ,两个字符串可以countElements(str)  //计算长度,可以智能的把中文当做一个字符(底层语言中中文为unico符处理起来麻烦)var str1:NSString=strstr1.lengthvar str2="hello\u{1F496}"countElements(str2) //长度为6var str3:NSString="hello\u{1F496}"str3.length   // 长度为7,在这里可以发现swift处理字符串时比OC更具优势let SFInt:Int = 2let SFDouble:Double = 2;let SFBool:Bool=true;let SFTuple:(Int,Int) = (2,3) //元组let SFOptional:Int?=nillet SFCharaceter:Character = "!"println("Bool:\(SFBool) \n Tuple:\(SFTuple)") // \n 换行//String Comparinglet stringA="abc"let stringB="abc"stringA==stringBlet stringC="abd"let stringD="d"stringA<stringCstringA<stringDlet array=["abc","abc","abc","abc"]for strs in array{   // strs.hasSuffix("c")    if(strs.hasPrefix("a"))    {     println("String=\(strs)")    }}// 导入OC中得框架可以使用原来OC中得其他方法   stringA.capitalizedString  stringA  stringA.uppercaseString  stringA.lowercaseString  stringA  // trim 操作  //对字符串的头尾进行截取,对中间是没有作用的var stringE=" a    b   b   c       "stringE.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())  //该方法来自OCstringEstringE.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString:"a")) // 不是从头开始的,无法截取stringE.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString:" a")) //注意是两个字符, a前面有个空格// splitstringE.componentsSeparatedByString(" ")stringE.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString:"b"))//joinvar stringF="-"stringF.join(["1","2","3"])// rangestringE.rangeOfString("b")  //返回的是可选型 ,返回第一个的位置// 最新的swift语法  可能  rangeOfString返回的是元组(22,4),不再是23..<27的range ,这是网友提供的并没有经过验证!!!!!!!!!!!// 反向收索stringE.rangeOfString("b", options: NSStringCompareOptions.BackwardsSearch)// 忽略大小写stringE.rangeOfString("b", options: NSStringCompareOptions.CaseInsensitiveSearch)// String类型有个 String.Index索引stringE.startIndexstringE.endIndex// < >为swift中泛型的概念let stringRange = Range<String.Index>(start:stringE.startIndex,end:stringE.endIndex)let startIndex=str.startIndex  // 注意它的0并不是整型0,而是String.Index类型// 整型10 表示向后走10步let endIndex:String.Index=advance(stringE.startIndex, 10)let seachIndex=Range<String.Index>(start: startIndex, end: endIndex)// 固定范围内搜索stringE.rangeOfString("b", options:NSStringCompareOptions.CaseInsensitiveSearch, range: seachIndex)// subStringvar toIndex=advance(startIndex, 10)stringE.substringToIndex(toIndex)var fromIndex=advance(startIndex,13)stringE.substringFromIndex(fromIndex)// 返回的是从10 - 13 不包括第13个字符stringE.substringWithRange(Range<String.Index>(start: toIndex, end: fromIndex))//insertvar insertIndex=advance(stringE.startIndex,5)stringE.substringFromIndex(fromIndex)//stringE.insert("!", atIndex: insertIndex)// stringE.removeAtIndex(insertIndex)// stringE.replaceRange(<#subRange: Range<String.Index>#>, with: <#C#>)// stringE.removeRange(<#subRange: Range<String.Index>#>)

 

swift 初见-4运算符与字符串操作