swift 3.0 再探索 - 1.String
2016-07-28 08:57
483 查看
swift 3.0 - 1.String
最近有空可以学习点新东西,有段时间在学习java和mySQL,转方向没那么快可以做到,眼下iOS 10 和Xcode8正式版准备上线,swift3.0也标示着这门语言日渐成熟了。
在中国国内,主流的开发语言还是Objective-C,这个主流主要还是国内用户群的问题,国内很多app都是支持的最低版本是iOS 6.0 到最新的。我在坐地铁和公交的时候,都可以看到很多iPhone 4S,iPhone 5和iPhone 5s,不知道是出于情怀还是前几代的iPhone真的是经久耐用,有这一个群体的存在,app开发就必需考虑系统的适配了,虽然不想Android那么多机型,但是也够你忙的,有很多新的,便捷的API,都无法使用。其中,iOS 7 和iOS 8加入了很多新的便利的API, 比如:iOS 7 NSURLSession,iOS 8 UIAlertController等等新的API和新的控件。由于适配版本跨度的问题,我们在做项目的过程中,很多时候都是采用了旧的API。swift建议运行在 iOS 7以上的系统,你可以运行在iOS 7之前,但是这个apple表示不建议这样做。说实话,我也没有试过到底回发生什么事情。当iOS 10 推出,开发者比较希望看到的是适配的系统跨度可以有iOS 6.0 升到iOS 8.0。关于这一点和iOS 10的适配,可以看看喵神的博客。
swift是一门跨平台的语言,windows下也是可以学习和使用的。疯传了很久的swift for windows,我是没有找到真正的下载地址,但是可以使用IBM制作的Web编译器,在现在编写swift的代码,直接搜索“Swift Sandbox”就可以找到了。
swift3.0--基础类型
一些其它语言都有的类型,就不一一讲解了,主要讲解一下String, Array, Tuples,Dictionary,Struct,Enums:
这一篇先讲String 和 常用的API
在Swift用两个关键字来声明变量var 和 let.
var和let 不是今天的重点,简单理解成:var 是声明一个可以多次赋值的属性(变量),let 是声明一个常量(仅可赋值一次)
Swift用String来表示字符串类型.它是Character类型值的集合;
2个字符串可以通过 + 来连接;
var声明的字符串,可理解成可变字符,let声明的理解成不可变,不可重复赋值字符串。
声明一个字符串:
//字符串的声明 let str1 = "I am a string" var str2 = "I am also a string" let str3 : String = "I am a string" var str4 : String = "I am also string" var str5 = "我是中文字符串" var 中文字符串 = String.init("我也是中文字符串") var str6 = "123456" print(str1 + "\n" + str2 + "\n" + str3 + "\n" + str4 + "\n" + str5 + "\n" + 中文字符串 + "\n" + str6)
输出结果如下:
I am a string I am also a string I am a string I am also string 我是中文字符串 我也是中文字符串 123456
空字符串的声明与判断:
let nillStr1 = "" var nillStr2 = "" print("空字符串1:\(nillStr1) \n" + "空字符串2:" + nillStr2) //判读是否为空 let isNill1 = nillStr1.isEmpty let isNill2 = nillStr2.isEmpty print(isNill1) print(isNill2) //打印结果为: 空字符串1: 空字符串2: true true
字符串的连接
通过”+”来连接两个字符串,同时支持”+=”
var a = "Swift" var b = "so esay!!" var c = a + b a += " " + b print(c) print(a) //输出结果: Swiftso esay!! Swift so esay!! //在字符串后追加字符 var a = "Swift so esay" var char : Character = "!" a.append(char) print(a) //输出结果: Swift so esay! //在字符串中插入字符 let name = "咸鱼哥" let time = "2016年7月28号" let 车类型 = "D" let 车次 = 16888 let 票价 = 204 let 出发地 = "广州南" let 目的地 = "南宁" let 订票提示 = "旅客\(name)先生, 您在\(time)订购了由\(出发地)开往\(目的地),编号为\(车类型)\(车次)的列车,单程票价是\(票价)元的往返.一共需要支付\(票价 * 2)元." print(订票提示) //输出结果: 旅客咸鱼哥先生, 您在2016年7月28号订购了由广州南开往南宁,编号为D16888的列车,单程票价是204元的往返.一共需要支付408元. //在某个位置插入字符 let vern : Character = "撸" var str = "老银键盘" str.insert(vern, at: str.index(str.startIndex, offsetBy: 2)) print(str) //打印结果 老银撸键盘 //在某个位置插入字符串 let today = "今天," let anything = "捡到钱" let mood = "很开心" var str = "老银,所以" str.insert(contentsOf: anything.characters, at: str.index(str.startIndex, offsetBy: 2)) str.insert(contentsOf: today.characters, at: str.startIndex) str.append(contentsOf: mood.characters) //---> //str.insert(contentsOf: mood.characters, at: str.endIndex) print(str) //打印结果 今天,老银捡到钱,所以很开心
字符串的截取
//字符串的截取 var subStr = "I am a string" //获取某个下标对应的字符 var char1 = subStr[subStr.index(subStr.startIndex, offsetBy: 2)] print(char1) //获取某个下标后一位对应的字符 var char2 = subStr[subStr.index(after: subStr.index(subStr.startIndex, offsetBy:2))] print(char2) //打印结果 a m //截取某一个范围的字符 var resultStr1 = subStr[subStr.index(subStr.endIndex, offsetBy: -6)..<subStr.endIndex] print(resultStr1) var resultStr2 = subStr[subStr.index(subStr.startIndex, offsetBy:0)..<subStr.index(subStr.endIndex, offsetBy: -3)] print(resultStr2) //打印结果: string I am str //获取某个子串在父串中的范围 var subStr = "I am a string" let sonStr = "am" var range = subStr.range(of: sonStr) //在sandbox 上报错了,稍后验证再更新;在Xconde 8-beta 3上面,range是一个range<index>?的类型,需要解包 print(range) //根据index和range删除字符 var subStr = "I am a string" var result1 = subStr.remove(at: subStr.index(before:subStr.endIndex)) print(result1) print(subStr) //打印结果:g I am a strin var result2 = subStr.remove(at: subStr.index(subStr.startIndex, offsetBy: 2)) print(result2) print(subStr) //打印结果:a I m a strin subStr.removeSubrange(subStr.startIndex...subStr.index(subStr.startIndex, offsetBy: 2)) print(subStr) //打印结果:a strin
字符串其它操作
var targetStr = "I am a string" //全部转大写 targetStr = targetStr.uppercased() print(targetStr) //打印结果:I AM A STRING //全部转小写 targetStr = targetStr.lowercased() print(targetStr) //打印结果:i am a string //判段两个字符串是否相等 let str1 = "diao zha tian le" let str2 = str1 let str3 = "diao zha tian le" let result1 = str1 == str2 print(result1) // true let result2 = str1 == str3 print(result2) // true
总结:
- String.Index 不是简单的int类型,可以理解为一个字符串字符的下标。
- 声明一个Index, String.index(String.startIndex/.endIndex(从头部/尾部开始), offsetBy: N(偏移多少个字符, 从头部开始输入正数, 从尾部开始输入负数) )。e.g string.index(string.startIndex, offsetBy: 2)
- ‘…’ , ‘..<’用于表示一个范围内的变化。
- remove的方法,部分会放回被删除的字符,原字符串会变成新字符串。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- iOS中的UIKeyboard键盘视图使用方法小结
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法