#swift入门简单语法#-循环,字符串

大家好,今天和大家讨论和分享的是swift中循环的相关重难点以及swift字符串的简单实用,学好扎实的语法基础对大家后面的深究有很大的帮助.本文中欢迎大家多提宝贵意见,共同学习,  谢谢.🌹

循环的介绍
   •   在开发中经常会需要循环
    •    常见的循环有:for/while/do while.
    •    这里我们只介绍for/while,因为for/while最常见

# for循环的写法

Swift循环语句和跳转语句

相比分支语句, 循环语句最大的作用就是让代码重复执行。Swift支持多种循环构造类型:while、repeat while、for、for in、函数内使用的guard。for和while循环是在执行循环体之前判断循环条件,而repeat while是在执行循环体之后判断循环条件。这就意味着for和while循环可能一次循环体都不执行,而repeat while循环至少执行一次循环体,这在编程中按照实际情况来使用。

for in是for循环的变形,是专门为集合遍历设计的。

# for语句

for语句的应用十分广泛,适应性也最强,下面是for语句的格式:

for 初始化; 循环条件; 迭代 {
    语句组
}
  • 和if语句一样,并不需要括号将判断条件括起来。
  • 初始化、循环条件和迭代部分都可以为空语句,但是不能省略分号。三个语句都为空的时候,相当于无限循环。

程序在执行到for语句的顺序是这样的:

1.执行初始化语句(只执行一次),我们可以在这里进行一些循环变量的初始化。
2.判断是否满足循环条件,若满足,就执行语句组,否则跳出for语句。
3.执行迭代语句。
4.一直重复步骤2和步骤3,直到跳出for语句为止。

  • 若一直满足循环条件,程序就进入了"死循环"。

下面是两个例子,注意两个输出的区别:

for var i = 0; i < 3; i++ {
    print(i);
}

打印的结果为:

0
1
2

这里的循环执行了3次,而下面的例子:

for var i = 0; i <= 3; i++ {
    print(i);
}

打印的结果为:

0
1
2
3

循环进行了4次。区别就在当i的值是3的情况下,i < 3i < =3哪一种情况能进入循环。只要弄明白了这个区别,for循环也应该掌握了。

# for in语句

for in是专门用于遍历集合的for循环。格式如下:

for 变量 in 集合 {
    语句组
}
  • 其中的变量,储存的是集合中的一个元素。

例如:

let numbers = [0, 1, 2, 3];
for num in numbers{
    print(num)
}

打印的结果为:

0
1
2
3

上例可以发现,我们并没有声名num为变量,它是隐式变量声明的。in后面的集合,for in语句让我们很方便地将集合中的元素一一取出来,保存到num中。

# while语句

while语句的结构如下:

while 循环条件 {
    语句组
}

在while中没有初始化语句,只要条件满足,循环就一直进行下去。

死循环的写法:

while true {
    语句组
}

while应用的例子:

var i = 0
while i < 3 {
    print(i)
    i++
}

打印的结果为:

0
1
2

循环执行了3次。

# repeat while循环

repeat while语句和while语句的区别就是,repeat while语句是先进行一次循环再判断循环条件。

在Swift2.0中,将do while改名为repeat while,其实两者的使用是一样的。

语句的结构如下:

repeat {
    语句组
} while 循环条件

例子如下:

var i = 0

repeat{
    print(i)
    i++
}while i < 3

打印结果是:

0
1
2

# 跳转语句

跳转语句能够改变程序的执行顺序,可以实现程序的跳转。Swift中有四种跳转语句:break、continue、fallthrough和return。

  • 其中return主要是用在函数中,这里不做叙述。

# break语句

break语句的作用是强行退出循环结构,不执行循环结构中剩余的语句。
默认情况下,break语句只跳出最近的循环(if语句不是循环语句),例如:

for var i = 0; i < 3; i++ {
    for var j = 0; j < 3; j++ {
        if j == 1 {
            break
        }
        print("i的值是:\(i),j的值是:\(j)")
    }
}

打印的结果是:

i的值是:0,j的值是:0
i的值是:1,j的值是:0
i的值是:2,j的值是:0

当遇到j == 1时,执行了break语句,跳出了最近的for var j = 0; j < 3; j++ {}循环,剩下的语句不在执行,所以打印的j的值只有0而没有1和2。

有另外一种情况就是,当j == 1,需要跳出最外面的for var i = 0; i < 3; i++ {}循环。这时候,可以使用带有标签的break语句,例如:

circulate: for var i = 0; i < 3; i++ {
                for var j = 0; j < 3; j++ {
                    if j == 1 {
                    break circulate
                }
                print("i的值是:\(i),j的值是:\(j)")
            }
}

打印的结果是:

i的值是:0,j的值是:0

在上面的例子中,我们给最外面的for循环加上了一个标签circulate,这样,我们就可以使用"break+标签"语句break circulate来跳出最外面的循环。

 # continue语句

continue语句用来结束本次循环,跳过循环体中剩下的语句,判断循环条件是否满足,继续下一次循环或不满足循环条件时跳出循环。
我们将for语句中使用的例子稍以修改:

for var i = 0; i < 3; i++ {
    if i == 1 {
        continue
    }
    print(i)
}

打印的结果为:

0
2

由于continue语句的存在,当满足i == 1时,就执行continue语句不执行剩下的语句,但是并没有跳出for循环。

continue语言也可以带上标签使用,使用方法和break语句一致,这里就不再详述。

# fallthrough语句

fallthrough是贯通语句,只能在switch语句中使用。当我们需要switch的case分支贯通时,就需要用到fallthrough语句:

let number = 2

switch number {
case 0,1 :
    print("0.1")
case 2 :
    print("2")
    fallthrough
case 3 :
    print("3")
default :
    print("nil")
}

打印的结果为:

2
3

在打印了"2"之后,遇到了fallthrough语句,其作用就是与下面的case3进行"贯通",执行case 3内的语句。执行完case 3中的语句之后,遇到了隐式的break语句,便跳出了switch语句。

  • 如果case 3内也有fallthrough语句,就会与default"贯通",执行default中的语句。虽然这种情况很少出现,但是Swift依然为我们想得非常周到。

 

 

字符串的介绍
    •    字符串在任何的开发中使用都是非常频繁的
   •    OC和Swift中字符串的区别
      在OC中字符串类型时NSString,在Swift中字符串类型是String
      OC中字符串@"",Swift中字符串""
   •    使用 String 的原因
       String 是一个结构体,性能更高
       NSString 是一个 OC 对象,性能略差
       String 支持直接遍历
       Swift 提供了 String 和 NSString 之间的无缝转换


# 字符串的使用
# 遍历字符串
// 字符串遍历
var str = "Hello, Swift"
for c in str.characters {
    print(c)
}
# 字符串拼接
    •    两个字符串的拼接
let str1 = "Hello"
let str2 = "World"
let str3 = str1 + str2
    •    字符串和其他数据类型的拼接
let name = "why"
let age = 18

let info = "my name is \(name), age is \(age)"
    •    字符串的格式化
    ◦    比如时间:03:04
let min = 3
let second = 4

let time = String(format: "%02d:%02d", arguments: [min, second])
# 字符串的截取
    •    Swift中提供了特殊的截取方式
    ◦    该方式非常麻烦
    ◦    Index创建较为麻烦
    •    简单的方式是将String转成NSString来使用
    ◦    在标识符后加:as NSString即可
//字符串的截取
/*
   简单的方式是将String转成NSString来使用
   在标识符后加:as NSString即可
*/
let mycode = "www.cnblogs.com/Mr-WangKB"

//从哪儿开始截取
var myUrl = (mycode as NSString).substringFromIndex(4)

//从第0个字符开始截取, 共截取多少个字符
myUrl = (mycode as NSString).substringToIndex(4)

//从哪儿开始, 截至字符为第多少个
myUrl = (mycode as NSString).substringWithRange(NSRange(location: 4, length: 11))

 

posted @ 2016-03-20 22:28  Mr-WangKB  阅读(710)  评论(0编辑  收藏  举报