2个字符串相等 swift_Swift基本语法以及与OC的比较

这篇博客介绍了Swift编程的基础知识,包括常量、变量的声明与使用,字符串的特性如自动类型判断、拼接、插入与删除操作,以及数组、字典和集合类型的创建、操作与遍历。还提到了可选类型、元组、断言等概念,是Swift初学者的入门教程。
摘要由CSDN通过智能技术生成
上方蓝字“iOS进阶宝典”关注我们 再点击右上角“...”菜单,选择“设为星标” d762b6a9fac2a2e030fa6117dfddb232.png 作者 |  CH520 来源 | 博客园资源分享中心 f7f14bf062a9bf32a59e08434d94018a.png    注释1、单行注释和OC一致。2、块注释中有与OC不同点:可以嵌套注释 33f5d662ae24fea3d78fe48d2d155f84.gif f7f14bf062a9bf32a59e08434d94018a.png常量和变量                         常量:初始化后可读不可写 let       
                变量:初始化后可读可写 var 88f09eebfdb5e36a50b8bcee42042e16.png 8455a508079c60d294d503cfa40e23e0.png
//不需要指定类型,系统会自动判断。 let teacherName = "阿林新";//自动判断为字符串,句尾分号可写可不写 let teacherName1 = 25;//自动判断为数字 let teacherAge = 26 //变量:初始化之后变量  (可读可写)  var teacherName2 = "阿林新";  teacherName2 = "阿林新最帅" //teacherName2 = 25//编译失败---只能在同类型间赋值(初始化之后类型就已经固定) //print(teacherName2);
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 用  +  合并string , + 号前后类型 8e57846aef94db18953badabaa4d4a2c.png
var hu = huName + String (huAge)//print(hu);
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 占位符 OC:%@,%d...   S: \(xxx) 8e57846aef94db18953badabaa4d4a2c.png
 let  huInfo2 = "阿林新\(huAge)岁"// = [NSString stringWithFormat@"阿林新%ld岁",huAge] //print(teacherInfo2)
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 指定类型,类型不会乱 8e57846aef94db18953badabaa4d4a2c.png
// .UInt 修饰的数据不能为负   ,int整数可以为负 //常量、变量名可以中文或者图标var nameLength :UInt = 7 var string :String = "hello swift"
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 数值型字面量 8e57846aef94db18953badabaa4d4a2c.png
//十进制let tenValue = 26//二进制let twoValue = 0b11010//八进制let eightValue = 0o32//十六进制let sixteenValue = 0x1A//print(tenValue,twoValue,eightValue,sixteenValue)
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 类型别名,类似OC中的tyPeDef 8e57846aef94db18953badabaa4d4a2c.png
typealias tongType = Int;//把 int --> tongTypevar tongAge1 : tongType = 26 //  var tongAge1:Int = 26
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png bool值 8e57846aef94db18953badabaa4d4a2c.png
//OC:BOOL :YES/NO 0为NO,非零即为真  ---- Swift:Bool :true / false 没有0或非零概念var boolVaue = true
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 元组 ,swift新类型 8e57846aef94db18953badabaa4d4a2c.png
// 把多个值绑定的复合值。元组中的值类型可以任意,不要求一致var yuanzu:(Int ,String) = (100,"hello")//访问元组中的值(类似OC类对象点相应属性)//print(yuanzu.0)
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 可选类型。swift新类型 8e57846aef94db18953badabaa4d4a2c.png
//1.如果这个类型有值,就是该值   2.如果没有值  ,这个值就是nil//optionStr代表两种情况:1.?号后有值 等于把后值赋给optionStr   2.?后没有值,optionStr = nil 【作用:保护有些值缺失情况】var optionStr :String? = "hello world"//var optionStr :String?//访问可选类型。需要   拆包(强制解析),不能直接访问//注意,强制类型之前,一定要确保可选类有值//print(optionStr!)
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 断言 8e57846aef94db18953badabaa4d4a2c.png
//首先有一个条件,如果条件成立,代码继续运行,否则,代码执行结束var age = 10//var age = -10assert(age > 0,"年龄不可能为负")//用于调制程序
650136e77e879d543e2937084568f009.gif运算符 c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 一元运算符 8e57846aef94db18953badabaa4d4a2c.png
//只需要一个变量即可完成的操作// (1) ‘++‘ 、 ’!‘ 、’ -‘var fuhaoNumber = -10;var fuhaoNuner2 = -fuhaoNumber;//print(fuhaoNumber,-fuhaoNumber);//(2).var addNumer = 88;var addnumer2 = addNumer++;var addnumer3 = addNumer--;//print(addnumer2,addnumer3)
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 二元运算符 8e57846aef94db18953badabaa4d4a2c.png
//需要两个变量即可完成的操作//数字的计算和C是一样的。可以用 + 拼接字符串//print("hello" + "swfit")
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 符合运算符 8e57846aef94db18953badabaa4d4a2c.png
//+= ...var a = 1;    a += 2//print("a等于\(a)")
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png swift 8e57846aef94db18953badabaa4d4a2c.png
// 新增:区间运算符 (只有两种情况)//1...5闭区间运算符,代表[1,5],包含1和5for tempNUmber in 1...5{//遍历 1 -- 5//    print(tempNUmber)}//for tempNumber2 in 1..<5{//[1,5)//    print(tempNumber2)//}
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 空盒运算符 8e57846aef94db18953badabaa4d4a2c.png
//(??)注意:空盒运算符,前后类型一致//适用范围://主要结合可选类型使用   。如果是非可选,那么空盒运算符后边的语句就短路掉了//空盒运算符,会先判断前边的可选类型有没有值,如果为空。就会返回后边的值。反之,就会对类型进项强制解析,取出可选类型的值//var kongheyuansuanfu :Int?var kongheyuansuanfu :Int?  = 78var kongheValue = kongheyuansuanfu ?? 27//print(kongheValue)//---四。字符串 和字符//NSString /NSMutableString//let / var
863b86443745439461e8abb6204ae63a.png创建字符串 带默认值 863b86443745439461e8abb6204ae63a.png
var stringValue = "class39"stringValue = "NBClass 39"//创建空字符串var stringValue1 = ""var stringValue2 = String()//推荐使用//判断字符串是否为空//if stringValue2.isEmpty {    print("isEmpty");////}
863b86443745439461e8abb6204ae63a.png说明字符串是值类型 863b86443745439461e8abb6204ae63a.png
//  string 1 和string 2 分为存储在不同地址 同OCvar string1 = "class39"var string2 = string1;string1 = "NB"//print(string1);//print(string2)//OC  字符串调用var OCstring1 = NSMutableString(string: "tongli");var OCstring2 = OCstring1;//OCstring1.appendString("hahha")//print(OCstring1,OCstring2);//但是如果把不可变字符串变换为可变,发生不同情况/*NSMutableString *str1 = [NSMutableString stringWithString:@"123"];NSString *str2 = str1;[str1 appendString:@"123"];NSLog(@"str1 -- %@",str1);NSLog(@"str2 -- %@",str2);*/
863b86443745439461e8abb6204ae63a.png字符串的长度 863b86443745439461e8abb6204ae63a.png
//字符   characters  ,//var stringLength = "hello"//stringLength.characters//var str111 = "dog is ?"//for  tempchar in str111.characters {    print(tempchar)//}长度:先分解成字符,再统计多少个print("长度是\(str111.characters.count)")
863b86443745439461e8abb6204ae63a.png字符串的拼接(两种方法) 863b86443745439461e8abb6204ae63a.png c1e9dfd7fd6eb21c9306d0ef60c6e24e.png + 号拼接 8e57846aef94db18953badabaa4d4a2c.png
//var addStr = "hello" + " world"print(addStr)
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 占位符 8e57846aef94db18953badabaa4d4a2c.png
//var addStr2  = "addString \(addStr)"//print(addStr2)
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 字符串的插入 8e57846aef94db18953badabaa4d4a2c.png
//     注意区别字符串的拼接var string111 = "hello"var string112 = "hello"//string111.insert("1", atIndex:string111.startIndex/*string111.endIndex*/)//string111.insert("!", atIndex:string111.startIndex.advancedBy(2))//advance : 前进//string111.insert("!", atIndex:string111.endIndex.advancedBy(-2))//advance : 前进//插入字符串//string111.insertContentsOf(" world".characters, at: string111.endIndex)let index = string111.endIndex.advancedBy(-2).predecessor()//predecessor:前任let index2 = string111.endIndex.advancedBy(-2)string111.insertContentsOf(" world".characters, at: index)string112.insertContentsOf(" world".characters, at: index2)//print(string111)//print(string112)//---------
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 字符串的删除(截取) 8e57846aef94db18953badabaa4d4a2c.png
//1.   string  -->  NString,通过OC方法操作字符串var baseStr :NSString = "123456789"//let indexStr1 = baseStr.substringFromIndex(2)//let indexStr1 = baseStr.substringToIndex(2)let indexStr1 = baseStr.substringWithRange(NSMakeRange(2, 4))//print(indexStr1)//直接操作 ..........................................................................var baseStr2 = "123456789"let range = baseStr2.endIndex.advancedBy(-5) ..< baseStr2.endIndexbaseStr2.removeRange(range)//print(baseStr2)
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 字符串的比较 A == B 8e57846aef94db18953badabaa4d4a2c.png
// 必须是string类型   区别NSStringvar  compareStr1 = "万万没想到"var  compareStr2 = "十万个冷笑话"if compareStr1 == compareStr2 {//    print("true")}else{//    print("false")}//注意:当swift完不成需求时,可以转化为OC,再进行操作
863b86443745439461e8abb6204ae63a.png 集合性(collection)类型 863b86443745439461e8abb6204ae63a.png
//-------------------------------------------A/数组     var:可变  let :不可变//1.创建数组//(1)空数组var emptyArr = [Int]()//代表数组只能存放int类型//添加元素emptyArr.append(3)emptyArr.append(4)//print(emptyArr)//创建一个带有默认值的数组var arr:[String] = ["apple","MiNi","HUAWEI","oppo"]
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 对数组编辑 8e57846aef94db18953badabaa4d4a2c.png
//增//1.arr.append()//2.插入arr.insert("vivo", atIndex: 1)//3.合并 (两个以上数组合并)arr += ["SAMSUNG","Nokia"]//删除 removearr.removeAtIndex(4)//修改  与OC类似,也是通过下标修改//修改一个元素arr[0] = "a pple"//修改多个元素arr[0...2] = ["MIUI" , "iOS" ,"Swift"]//数组的遍历//不用指定类型for temp in arr {}//得到元素在数组中下标    index--下标 value -- 值(数组元素)  其中enumerate()返回值是一个数组,这个数组每个人元素是元组 ,这个元组包含的是下标和数组元素值for (index,value) in arr.enumerate() {//    print("index -- \(index)----Value -- \(value)")}//判断数组是否为空if arr.isEmpty {//    //    print("this arrary is empty")//}else{//    //    print("this arrary is not empty  \(arr) \n \(arr[0])")}
863b86443745439461e8abb6204ae63a.png字典 863b86443745439461e8abb6204ae63a.png c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 创建字典 8e57846aef94db18953badabaa4d4a2c.png
//创建一个空的字典  []中式键值对得类型var emptyDic = [Int : String]()//字典的设置和访问emptyDic[1] = "iPone_1"emptyDic[2] = "iPone_2"//print(emptyDic[1])//print(emptyDic[2])
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 创建字典,带有默认值 8e57846aef94db18953badabaa4d4a2c.png
var cityDic : [String : String] = ["中国":"北京","美国":"华盛顿","日本":"东京","马尔代夫":"马累"]
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 判断字段是否为空 8e57846aef94db18953badabaa4d4a2c.png
if cityDic.isEmpty {}
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 8e57846aef94db18953badabaa4d4a2c.png
//通过键值去增加cityDic["韩国"] = "首尔"cityDic["法国"] = "巴黎"
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 删除 8e57846aef94db18953badabaa4d4a2c.png
//通过键删除cityDic.removeValueForKey("日本")
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 修改 8e57846aef94db18953badabaa4d4a2c.png
//方法一:通过键修改和添加一样。//如果字典中不存在该键,则为添加。否则为修改cityDic["韩国"] = "汉城"//方法二:cityDic.updateValue("普罗旺斯", forKey: "法国")
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 遍历 8e57846aef94db18953badabaa4d4a2c.png
//for in 中间写键值对/*for (key,value) in cityDic {//print("key -- \(key)  ++  value --- \(value)")}*///也可以只遍历key或者value/*for tempKey in cityDic.keys {//    print("\(tempKey)")}*///for tempValue in cityDic.values {//print(tempValue)//}//print(cityDic)
863b86443745439461e8abb6204ae63a.png集合 863b86443745439461e8abb6204ae63a.png c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 1.无序性  2.互异性 8e57846aef94db18953badabaa4d4a2c.png
//1.创建一个集合 //空var emptySet = Set<String>()//有默认值var defaultSet : Set<String> = ["法拉利","兰博基尼","宝马","吉普","布加迪"]
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 8e57846aef94db18953badabaa4d4a2c.png
defaultSet.insert("劳斯莱斯")
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 删除 8e57846aef94db18953badabaa4d4a2c.png
//直接删除这个元素defaultSet.remove("法拉利")
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 包含 8e57846aef94db18953badabaa4d4a2c.png
//if defaultSet.contains("吉普") {//print("我有这个车")//}
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 遍历 8e57846aef94db18953badabaa4d4a2c.png
//for tempCar in defaultSet {//    print("我有一辆车,叫\(tempCar)")//}
c1e9dfd7fd6eb21c9306d0ef60c6e24e.png 集合的特殊运算 8e57846aef94db18953badabaa4d4a2c.png
var set1 : Set<String> = ["1","2","3"];var set2 : Set<String> = ["1","2","4"];
f7f14bf062a9bf32a59e08434d94018a.png 找到两个集合间相同的元素  集合交集
var result1 : Set<String> = set1.intersect(set2)
f7f14bf062a9bf32a59e08434d94018a.png 找到交集之外的元素
var result2 :Set<String> = set1.exclusiveOr(set2)
f7f14bf062a9bf32a59e08434d94018a.png 合并 并集
var result3 :Set <String> = set1.union(set2)
f7f14bf062a9bf32a59e08434d94018a.png 集合的补集
var result4 :Set<String> = set1.subtract(set2)//set1 - set2print(result4)print(defaultSet)
文章来源于网络,已尽可能标明作者以及来源,文章内容为作者独立观点,不代表本公众号立场,因文章侵权本公众号不承担任何法律及连带责任,如有侵权,请联系我们删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值