目录:


  • 目录
  • 一Optional 可选型
  • 二nil coalescing operator 聚合运算符
  • 三 区间运算符与for in循环
  • 四 字符串
  • 字符串的操作
  • 引入Foundation库
  • 一些字符串的常用操作
  • 五数组与字典
  • 数组


一:Optional 可选型

var optionalVariable :Int?

let userInput = “abc"
var age = uerInput.toInt()

if age!=nil
{
     println(“your age is \(age!)”)//作为开发者知道age一定是有值的
     println(“your age is ”+String(age!))//在可选型后面加!叫做可选型的解包
}
else
{
     println(“Invalidate userInput")
}

另一种解包方式Optional Binding

if let userAge = userInput.toInt()
{
     println(“your age is \(userAge)")
}else{
     println(“Invalidate userInput")
}

let strA:String? = “test"
strA!//解包

let strB:String ! = “test"

strB//不需要再次解包,由于在声明的时候已经加了!进行了解包,之后进行使用的时候就不需要解包

二:nil coalescing operator 聚合运算符

a ?? b 等同于 a! = nil ? a! : b

需要满足的条件:

a必须是一个可选型,b必须跟a解包之后的类型相一致

  • 一般写法:
userNickName  = “echo"
if userNickName != nil
{
     println(“Hello,\(userNickName!)")
}else{
     println(“hello,Guset")
}
  • 三元运算符写法
let outputName:String = userNickName ! = nil ? userNickName ! :”Guset"
//如果userNickName的解包不为nil,则outputName 的值为userNickName的解包
//如果userNickName的解包为nil,则outputName 的值为”Guset"
println(“Hello,”+ outputName)
  • 使用聚合运算符之后的代码
let  outputName:String = userNickName ?? “Guest"
println(“Hello,”+ outputName)

三 区间运算符与for in循环

闭区间 [a,b] a…b
开区间 [a,b) a..< b

for index in 1…10
{
     index
}

四 字符串

与oc对比
let String 相当于oc中的NSString 为不可变的字符串
var String 相当于oc总的NSMutableString 为可变的字符串

  • 初始化一个空的字符串

var emptyString = “”
var emptyString2 = String( )//实质上是声明了一个类的对象

  • 判断一个字符串是否为空

emptyString.isEmpty 返回值为true或者false

  • 字符串的遍历
var str = “hello,echo”
var c:Character
for c in str{
     println(c)
}

字符串的操作:

  • 拼接:

str.append(“!”)

注:
字符串之后拼接字符,只能用append方法,不可以用+来进行拼接。而字符串与字符串之间的拼接,可以使用+,同时也可以使用append方法。总之,append方法在字符串拼接的时候不会出错,推荐使用append方法对字符串进行拼接。

  • 计算字符串长度:

countElements(str)

  • 字符串的插入
let str : String = “echo"
println(“I am \(str)")

  • 字符串前缀,后缀

prefix and Suffix
.hasPrefix and .hasSuffix

let chapterNames = [
     “第一章 1.为你的ios应用程序开发做准备”,
     “第二章 2.为你的ios应用程序开发做准备”,
     “第二章 3.为你的ios应用程序开发做准备”,
     “第四章 4.为你的ios应用程序开发做运算符”,
     “第五章 5.为你的ios应用程序开发做运算符”,
]
var count0= 0
var count1= 0
for name in chapterNames
{
     if name.hasPrefix(“第二章”){
          count0++
     }

     if name.hasSuffix(“运算符”){
          count1++
     }    
}

以上所有方法都不用import其他类库,以下方法涉及到引入库文件

引入Foundation库

import Foundation
var str = “hello,playground"
str.capitalizedString//将str中的所有单词的首字母变成大写字母
str.uppercaseString//将str中的所有单词都变成大写
str.lowercaseString//将str中的所有单词都变成小写

在这个方法的使用过程中,并不改变str本身的值

//trim
var str2:String = "    !hi!!!!"
str2.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())//去除了所有空格
str2.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: " !"))//截取了所有空格和所有!,保留了hi

//split
var str3 = "welcome to play swift"
str3.componentsSeparatedByString(" ")//用空格把str3分成几部分。输出结果为["welcome", "to", "play", "swift"]
str3.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: " !-"))//输出结果为["welcome", "to", "play", "swift"]

//join
var str4 = "-"
str4.join(["1","2","3"])//输出结果为“1-2-3”

一些字符串的常用操作

var str = "welcome to Play Swift step by step"

range

str.rangeOfString("step")
str.rangeOfString("step", options:NSStringCompareOptions.BackwardsSearch)
str.rangeOfString("welcome", options: NSStringCompareOptions.CaseInsensitiveSearch )//忽略大小写,进行匹配
str.startIndex
str.endIndex
let strRange = Range<String.Index>(start:str.startIndex,end:str.endIndex)

let startIndex = str.startIndex//startIndex不是整数
let endIndex :String.Index = advance(str.startIndex, 10)
let searchRange = Range<String.Index>(start:startIndex,end:endIndex)
str.rangeOfString("step", options: NSStringCompareOptions.CaseInsensitiveSearch, range: searchRange)

substring

var toIndex = advance(str.startIndex, 4)//从低一个字符到第四个字符
str.substringToIndex(toIndex)

var fromIndex = advance(str.startIndex, 14)
str.substringFromIndex(fromIndex)//从第十四个字符一直到结束的内容

str.substringWithRange(Range<String.Index>(start:toIndex,end:fromIndex))//截取第四到第十四的字符串,这个范围是一个前闭后开的区间

insert

var insertIndex = advance(str.startIndex, 2)
str.insert("!", atIndex:insertIndex )//在第2个位置后面插入一个“!”

remove

str.removeAtIndex(insertIndex)//返回值为被删掉打这个字符
str.removeRange(Range<String.Index>(start:str.startIndex,end:insertIndex))

replace

var replaceEndIndex = advance(str.startIndex, 3)
str.stringByReplacingCharactersInRange(Range<String.Index>(start:str.startIndex,end:replaceEndIndex), withString: "123")

五,数组与字典

数组

var array = ["a","b","c"]

一个数组只能存储特定类型的数据
所存储的数据不一定是一个类的对象,可以是基础数据类型

var array = ["a","b","c"]//隐式声明数组
var array2:[String] = ["a","b","c"]//显示
var array3:Arrary<String> = ["a","b","c"]
array[0] = "x"//为第0位赋值为x

创建一个空的数组

var array4 = [Int]()
var str = String()
var array5 = Array<String>()
var array6:Array<Int> = []

创建一个有统一初始值的数组

array6 = [Int](count:10,repeatedValue:0)//初始化一个长度为10,初始值为0的数组

数组的合并

var array7 = [2,3,4]
var array8 = array6+array7//array6合并array7

清空数组

array6 = []
array = [String]()
array2 = Array<String>()

数组的基本操作

array.count//数组的长度
array.append("d")//添加元素
array+=["e"]//添加元素

array.insert("p", atIndex: 2)//将“p”插入到array的索引位置为2的位置
array.removeAtIndex(0)//移除索引位置为0的元素