Swift学习—字符串&数组&字典
字符串
- OC和Swift中字符串的区别
- 在OC中字符串类型时NSString,在Swift中字符串类型是String
- OC中字符串@"",Swift中字符串""
- Swift中String是第一个结构体,性能更高
- String支持直接遍历
- Swift提供了String和NSString之间的无缝转换
- 用反斜线 \ 和小括号 () 做字符串插值(把常量\变量插入到字符串中)
- let hand = 2
var age1 = 20
let string1 = "我今年\(age1)岁了,有\(hand)只手" - //也可以使用字符串拼接,但是必须转成字符串
var string2 = "我今年"+String(age1) + "岁了,有\(hand)只手"
- let hand = 2
- 遍历字符串
- var string = "hi siri"
for s in string.characters { // string.characters 表示string中所有的字符
print(s) // 依次打印7个字符,空格也是
}
- var string = "hi siri"
- 字符串和其他数据类型的拼接
- let name = "siri"
let age = 10
let siriInfo = "my name is \(name), age is \(age)"
- let name = "siri"
- 字符串的格式化 时间:03:04
- let min = 3
let second = 4
let time = String(format: "%02d:%02d", arguments: [min, second])
- let min = 3
- 字符串的截取
- Swift中提供了特殊的截取方式,但是非常麻烦,并且Index很难创建
- 简单的方式是将String转成NSString来使用. String -> NSString 在标识符后加:as NSString即可
- let baidu = "www.baidu.com"
var subStr = (baidu as NSString).substringFromIndex(4) // “baidu.com"
subStr = (baidu as NSString).substringToIndex(3) // “www"
subStr = (baidu as NSString).substringWithRange(NSRange(location: 4, length: 5)) // “baidu"
- let baidu = "www.baidu.com"
- 注意:在Swift中String有一个叫toInt的方法,能够将一个字符串转换为Int类型。需要注意的是不是所有的字符串都可以转换为整数。
- let numStr = “123"
//let number = numStr.toInt() // 好像没有用了
- let numStr = “123"
- 数组:(Array)是一串有序的由相同类型元素构成的集合,let修饰时不可变数组,var修饰时可变数组
- // 定义一个可变数组,必须初始化才能使用
var array1 : [String] = [String]()
// 定义一个不可变数组
let array2 : [NSObject] = ["wwl", 18]
- // 定义一个可变数组,必须初始化才能使用
- 声明
- // 声明方式一:var myArray1 : Array<String>
// 声明方式二:var myArrray2 : [String]
- // 声明方式一:var myArray1 : Array<String>
- 初始化
- // 定义时直接初始化
var array3 = ["aaa", "sss", "ddd"] // 类型推导出 string 类型
// 先定义,后初始化
var array4 : Array<String>
array4 = ["fff", "ggg", "hhh"]
- // 定义时直接初始化
- 数组操作:
- // 添加数据
array.append("dd")
// 删除元素
array.removeFirst()
// 修改元素
array[0] = "ee"
// 取值
array[1]
//插入元素
array.insert("ttt", atIndex: 0) - // 取数组也可以用区间
array[1...2]
- // 添加数据
- 数组的遍历
- // 普通遍历数组
for i in 0..<array.count {
print(array[i]) // 有下标
}// for in 方式
for item in array {
print(item) // 不需要下标
}// 设置遍历的区间
for item in array[0..<2] { // 0..<2 开区间 0,1 0...2 闭区间 0,1,2
print(item)
}
- // 普通遍历数组
- 数组的合并
- 只有相同类型的数组才可以合并
- var stringArr1 = ["aa", "bb","cc"]
var stringArr2 = ["dd", "ee"]
var stringArr3 = array + array1;// 不建议一个数组中存放多种类型的数据
var objectArr1 = [22, 33, "aa"]
var objectArr2 = ["bb", 44]
objectArr1 + objectArr2
- var stringArr1 = ["aa", "bb","cc"]
- 只有相同类型的数组才可以合并
- 通过一个返回布尔类型的isEmpty属性检查数组的长度是否为0
- var stringArr = ["aa", "bb", "cc"]
if !stringArr.isEmpty {
print("stringArr have \(stringArr.count) items")
} else {
print("stringArr is empty")
}
stringArr have 3 items
- var stringArr = ["aa", "bb", "cc"]
- 用(+=)操作符来把一个数组添加到另一个数组的末尾
- (+=)操作符来把一个元素添加到数组末尾 好像删除了
- var stringArr = ["aa", "bb", "cc"]
var stringArr1 = ["dd", "ee", "ff"]
stringArr1 += stringArr
print(stringArr1) // ["dd", "ee", "ff", "aa", "bb", "cc"]
- var stringArr = ["aa", "bb", "cc"]
- Swift数组类型也提供初始化方法来创建确定长度和提供默认数值的数组。你可以通过这个初始化方法增加一个新的数组,元素的数量成为count,合适的默认值为repeatedValue
- var threeStringArr = [String](count: 3, repeatedValue: "hi")
// 得益于类型推断,也可以不指定类型
var threeDoubleArr = Array(count: 3, repeatedValue: 2.0)
- var threeStringArr = [String](count: 3, repeatedValue: "hi")
- Swift中的字典类型是Dictionary,泛型集合。var修饰是可变字典,let修饰时可变字典
- 声明字典类型:
- var dict1: Dictionary<Int, String>
var dict2: [Int: String]
- var dict1: Dictionary<Int, String>
- 初始化:
- 必须进行初始化才能使用
- var dict1: Dictionary<Int, String> = Dictionary()
- // 定义一个可变字典
var dict3 : [String : NSObject] = [String : NSObject]()// 定义字典的同时进行初始化
let dict4 = ["name" : "xiaosan", "age" : 18] // 类型推导出 [String : NSObject] 类型// swift中任意对象,通常不使用NSObject,使用AnyObject
var dict5 : Dictionary<String, AnyObject>
dict5 = ["name" : "dd", "age" : 18]
- // 定义一个可变字典
- 字典的基本操作
- // 字典的操作
var dict : [String : AnyObject] = [String : AnyObject]()dict = ["age" : 18, "height" : 1.74, "name" : "xiaocan"]
// 添加数据
dict["weight"] = 60.0// 删除数据
dict.removeValueForKey("age")// 修改字典
dict["name"] = "xiaoer"
dict["age"] = 18 // 如果没有这个键,则为添加数据// 查询
dict["name"]
- // 字典的操作
- 字典的遍历
- // 遍历字典中所有的值
for value in dict.values {
print(value)
}
// 遍历字典中所有的键
for key in dict.keys {
print(key)
}// 遍历所有的键值对
for (key, value) in dict {
print(key)
print(value)
}
- // 遍历字典中所有的值
- 字典的合并
- var myDict1 = ["name" : "xiaosan", "age" : 20]
var myDict2 = ["height" : 1.77, "address" : "taikang"]// 字典不可以相加合并 另外类型不同也不能合并
for (key, value) in myDict1 {
myDict2[key] = value
}
- var myDict1 = ["name" : "xiaosan", "age" : 20]
- removeValueForKey && updateValue(forKey:)
- 字典的updateValue(forKey:) 方法去设置或者更新一个特定键的值,如果键不存在则会设置它的值,如果键存在则会更新它的值, 和下标不一样是, updateValue(forKey:) 方法如果更新时,会返回原来旧的值rThis enables you to 可以使用这个来判断是否发生了更新。
- var dict = ["name" : "siri", "age" : 18, "address" : "nanjing"]
iflet oldValue = dict.updateValue("Siri", forKey: "name") {
print(oldValue) // siri
}//使用下标语法把他的值分配为nil,来移除这个键值对。
dict["age"] = nilprint(dict) // ["address": nanjing, "name": Siri]
- var dict = ["name" : "siri", "age" : 18, "address" : "nanjing"]
- 使用removeValueForKey方法,如果存在键所对应的值,则移除一个键值对,并返回被移除的值,否则返回nil。
- if let removedValue = dict.removeValueForKey("address") {
print("The remove dict's adddress is \(removedValue)") // The remove dict's adddress is nanjing
} else {
print("The dict does not contain a value for address")
}
- if let removedValue = dict.removeValueForKey("address") {
- 字典的updateValue(forKey:) 方法去设置或者更新一个特定键的值,如果键不存在则会设置它的值,如果键存在则会更新它的值, 和下标不一样是, updateValue(forKey:) 方法如果更新时,会返回原来旧的值rThis enables you to 可以使用这个来判断是否发生了更新。
Swift学习—字符串&数组&字典的更多相关文章
- Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)
swift用起来刚开始感觉有点怪怪的,但用了一段时间觉得还是挺好用的,哈哈.毕竟都是要有一个过程的嘛. 我就写一些自己在使用swift的时候的注意点吧,如有不正之处,还请指正! 一.在开发中优先使用常 ...
- [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换
1.JSON字符串与字典(Dictionary)之间的相互转换 import Foundation //JSON字符串转换为字典(Dictionary) func getDictionaryFromJ ...
- Swift学习字符串、数组、字典
一.字符串的使用 let wiseWords = "\"I am a handsome\"-boy" var emptyString = "" ...
- Object-C 语法 字符串 数组 字典 和常用函数 学习笔记
字符串 //取子字符串 NSString *str1=@"今天的猪肉真贵,200块一斤"; NSString *sub1=[str1 substringFromIndex:4]; ...
- Swift JSON字符串和字典以及数组的互转
1.JSONString转换为字典 // JSONString转换为字典 func getDictionaryFromJSONString(jsonString:String) ->NSDict ...
- IOS NS 字符串 数组 字典 文件 动态 静态 操作
ios 常用字符串的操作 //将NSData转化为NSString NSString* str = [[NSString alloc] initWithData:response e ...
- oc字符串+数组+字典操作题目
1. 判断中间目录是否存在 (10分) 比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng" 返回:YES 传入字符串 ...
- Swift 循环、数组 字典的遍历
import Foundation // 数组声明 var arr = [String]() // 数组循环添加项 ...{ arr.append("Item \(index)") ...
- swift学习之数组
首先数组的定义:以有序的方式存储同样类型的值 (1)数组的简写(shorthand)语法 你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型.也能够通过 ...
随机推荐
- Add 1G to a LVM on VMware
1. update disk1 to 5G from 4G in vcenter2. echo 1 > /sys/block/sda/device/rescan3. fdisk /dev/sda ...
- iframe获取父、子窗口的方法
jquery.js调用iframe父窗口与子窗口元素的方法 1. jquery在iframe子页面获取父页面元素代码如下: $("#objid",parent.document) ...
- SVN在团队项目中的使用技巧:[2]Tag操作
SVN是Subversion的简称,是一个开放源代码的版本控制系统 本节讲述SVN使用中的TAG操作 文中若有错误或不足之处,欢迎留言指正 工具/原料 电脑 SVN 方法/步骤 1.认识SVN中T ...
- 【转】sql server2005中raiserror的用法
raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql ...
- Sublime Text 3 自定义配置快捷键
Settings-User: { "font_face": "Courier New", "font_size": 14.0, " ...
- [JS]鼠标事件穿透的问题
今天制作登陆窗口的效果时碰到的一个问题,如下: 标签结构如下: <div id="loginFrame"> <form class="loginFram ...
- UVA 12563 劲歌金曲(01背包)
劲歌金曲 [题目链接]劲歌金曲 [题目类型]01背包 &题解: 题意:求在给定时间内,最多能唱多少歌曲,在最多歌曲的情况下,使唱的时间最长. 该题类似于01背包问题,可用01背包问题的解题思路 ...
- python(12)给文件读写上锁
目的:当我们用脚本去爬取数据或者向文件中写数据的时候,有时候需要两个或者多个脚本同时向一个文件中读写 于是乎就会出现写乱的情况,于是乎我们就需要把正在写的文件先锁起来,只让当前的写,写完后再释放 代码 ...
- [复变函数]第11堂课 3.3 Cauchy 积分定理及其推论
0. 引言 (1) Cauchy 积分定理: 设 $D$ 为 $(n+1)$ 连通区域, $f$ 在 $D$ 内解析且连续到边界 $C$, 则 $\dps{\int_C f(\zeta)\rd \ze ...
- PopuWindow_2
点击一个popupwindow窗口之外的区域popupwindow消失,带来的问题!! popupwindow窗口之外的区域popupwindow消失 , 以前说过需要设置: mPopupWindow ...