//
// main.swift
// SwiftLesson03
//
// Created by lanou on 16/10/24.
// Copyright (c) 2016年 lanou. All rights reserved.
//
import Foundation
//字符串长度strlen(),比较strcom(),拷贝,拼接...
//格式化字符串
//字符串长度
//判断字符串是否相等
//字符串的拼接
//遍历
//大小写转换
//前后缀 是否相等
//判断字符串是否为空
//字符串分为:1. 可变字符串(var) 2. 不可变字符串(let)
//不可变字符串(let)
//(1)字符串的创建
let str = "hello"
let str1 = "1 + 2 = \(3)"
//根据已经存在的字符串来创建一个新的字符串
let str2 = "\(str),World"
//格式化创建字符串
//format:我们自定义的格式,arguments:参数集合,要用一个中括号来包括
let str3:String = String(format: "%d + %d = %d", arguments: [3,4,7])
let str4 = String(format: "%d + %d = %d", 4,5,9)
println("\(str) \(str1) \(str2) \(str3) \(str4)")
//字符串长度(characters,lengthOfBytesUsingEncoding),4表示UTF-8的编码(NSUTF8Encoding)
let length = str3.characters.count
let length = str3.lengthOfBytesUsingEncoding(4)
println("length = \(length)")
//判断一个字符串是否为空:isEmpty,返回一个Bool值
if str4.isEmpty {
println("str4为空")
}
//判断字符串是否相等(前,后缀是否等于某一个字符串;两个字符串是否全等)
let string0 = "hello"
let string1 = "hello"
if string0 == string1 {
println("string0 = string1")
}
//hasPrefix:前缀是否等于某一个字符
if string0.hasPrefix("he") {
println("string0是以'he'开头")
}
//hasSuffix:后缀是否等于某一个字符
if string0.hasSuffix("lo") {
println("string0是以'lo'结尾")
}
//大小写转换
//将字符串里面的英文全部转换为大写:uppercaseString
let string2 = string0.uppercaseString
println("string2 = \(string2)")
//将肌肤穿里面的英文全部转换为小写:lowercaseString
let temp = "dnfSDfns"
let string3 = temp.lowercaseString
println("string3 = \(string3)")
//可变字符串
var mutableStr = "hello"
println(mutableStr)
mutableStr += "world"
println(mutableStr)
//数组: 数组分为 可变数组 和 不可变数组
//可变数组可以动态添加元素,删除元素
//swift中的数组可以存放一种或者多种数据类型(C语言中只能存放同种类型的数组类型)
//1.字面量创建一个数组
let numArray = [1,2,3,4,5]
let numArray1 = [1.2,2.1]
//表示创建了一个空的整形数组
let numArray2:[Int] = [Int]()
//字符串
let strArray:[String] = ["hello","world","das"]
println(numArray)
println("numArray = \(numArray1)")
println("ghjghgj----\(strArray)")
//数组中存放多种数据类型
let array = [1,2,3,23.23,"hello"]
let array1:[NSObject] = [1,2,3,23.23,"hello"]
//访问数组元素:通过数组下标
println(array[4])
println(numArray[1])
//数组的容量 (数组的元素个数):count
let count = array1.count
println(count)
//注意:访问数组的时候不能数组越界
//println(array1[5]) (fatal error: Array index out of range)
//遍历,支持for循环遍历
print("for循环遍历: ")
for var i = 0; i < array1.count; i++ {
print("\(array[i]) ")
}
println()
//for-in遍历就是遍历这个数组,把数组里面的东西一次给element
print("for-in循环遍历: ")
for element in array1 {
print("\(element) ")
}
println()
//建立一个整型数组(10个元素),对整型数组进行for-in遍历,如果元素偶数的话就打印出来,并求奇数之和
let intArray = [1,5,9,6,4,8,3,2,45,22]
var sum = 0
for temp in intArray {
if temp%2 == 0 {
print("\(temp) ")
} else {
sum += temp
}
}
println("intArray数组中,奇数之和 = \(sum)")
//另一种for-in遍历
for (index.element) in intArray.enumerate() {
print("下标=\(index),对应的元素=\(element)")
}
//可变数组:[Int] 表示一个整型数组,后面的()表示初始化
var mArray = [Int]()//创建了一个空的整型数组
var mStrArray = ["Hello","World"]
//不可变数组中的所有操作(访问某个元素,数组的元素个数,遍历....)在可变数组中都可以使用
//但是可变数组中的特有操作(增加,删除...)在不可变数组中不可以使用
//增加元素:增加的元素必须跟数组中的元素是同一类型
//如果数组类型是:[NSObject],可以增加任意类型的元素
mStrArray.append("123")
mArray.append(23)
print("\(mArray) \(mStrArray) \n")
//在指定位置插入元素
mStrArray.insert("abc", atIndex: 1)
println(mStrArray)
//获取某一个元素在数组中的下标
let index0 = mStrArray.indexOf("Hello")
println("Hello的下标--\(index0)")
/*
删除:
mStrArray.removeAll():移除数组里面所有的元素并且清空内存
mStrArray.removeAll(keepCapacity: Bool):移除数组里面所有的元素并且决定是否保持数组原有的容量
mStrArray.removeAtIndex(index: Int):移除某一个元素并且将这个元素返回出来
mStrArray.removeFirst():删除第一个元素
mStrArray.removeLast():删除最后一个元素
mStrArray.removeRange(subRange: Range<Int>):删除指定位置指定长度的元素(mStrArray.removeRange(Range(0...3))
*/
let elementTemp = mStrArray.removeAtIndex(2)
println("移除了第3个元素的数组\(mStrArray),被移除的元素是\(elementTemp)")
//元组:元组是一种可以自定义特定数组类型的集合
let num0:(Int,Double) = (1,2.3)
let value:(Int,Double,String) = (23,2.3,"23")
//访问元组中的元组 .0 .1 .2.......
let valueElement0 = value.0
let valueElement1 = value.1
let valueElement2 = value.2
println("valueElement0 = \(valueElement0)")
println("valueElement1 = \(valueElement1)")
println("valueElement2 = \(valueElement2)")