字符串

  • 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)只手"
 
  • 遍历字符串

    • var string = "hi siri"
      for s in string.characters { // string.characters 表示string中所有的字符
          print(s)   // 依次打印7个字符,空格也是
      }
 
  • 字符串和其他数据类型的拼接

    • let name = "siri"
      let age = 10
      let siriInfo = "my name is \(name), age is \(age)"
             my name is siri, age is 10
 
  • 字符串的格式化  时间:03:04

    • let min = 3
      let second = 4
      let time = String(format: "%02d:%02d", arguments: [min, second])
 
  • 字符串的截取

    • 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"
 
  • 注意:在Swift中String有一个叫toInt的方法,能够将一个字符串转换为Int类型。需要注意的是不是所有的字符串都可以转换为整数。

    • let numStr = “123"  
      //let number = numStr.toInt()  // 好像没有用了
 
数组
  • 数组:(Array)是一串有序的由相同类型元素构成的集合,let修饰时不可变数组,var修饰时可变数组

    • // 定义一个可变数组,必须初始化才能使用
      var array1 : [String] = [String]()
      // 定义一个不可变数组
      let array2 : [NSObject] = ["wwl", 18]
 
  • 声明

    • // 声明方式一:var myArray1 : Array<String>
      // 声明方式二:var myArrray2 : [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

 
  • 通过一个返回布尔类型的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 stringArr1 = ["dd", "ee", "ff"]
      stringArr1 += stringArr
      print(stringArr1)  // ["dd", "ee", "ff", "aa", "bb", "cc"]
 
  • Swift数组类型也提供初始化方法来创建确定长度和提供默认数值的数组。你可以通过这个初始化方法增加一个新的数组,元素的数量成为count,合适的默认值为repeatedValue

    • var threeStringArr = [String](count: 3, repeatedValue: "hi")
      // 得益于类型推断,也可以不指定类型
      var threeDoubleArr = Array(count: 3, repeatedValue: 2.0)
 
 
 
字典
  • Swift中的字典类型是Dictionary,泛型集合。var修饰是可变字典,let修饰时可变字典
 
  • 声明字典类型:

    • var dict1: Dictionary<Int, String> 
      var dict2: [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
      }

 
  • 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"] = nil

        print(dict)  // ["address": nanjing, "name": Siri]

    • 使用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")
        }
 
 

Swift学习—字符串&数组&字典的更多相关文章

  1. Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)

    swift用起来刚开始感觉有点怪怪的,但用了一段时间觉得还是挺好用的,哈哈.毕竟都是要有一个过程的嘛. 我就写一些自己在使用swift的时候的注意点吧,如有不正之处,还请指正! 一.在开发中优先使用常 ...

  2. [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换

    1.JSON字符串与字典(Dictionary)之间的相互转换 import Foundation //JSON字符串转换为字典(Dictionary) func getDictionaryFromJ ...

  3. Swift学习字符串、数组、字典

    一.字符串的使用 let wiseWords = "\"I am a handsome\"-boy" var emptyString = "" ...

  4. Object-C 语法 字符串 数组 字典 和常用函数 学习笔记

    字符串 //取子字符串 NSString *str1=@"今天的猪肉真贵,200块一斤"; NSString *sub1=[str1 substringFromIndex:4]; ...

  5. Swift JSON字符串和字典以及数组的互转

    1.JSONString转换为字典 // JSONString转换为字典 func getDictionaryFromJSONString(jsonString:String) ->NSDict ...

  6. IOS NS 字符串 数组 字典 文件 动态 静态 操作

    ios 常用字符串的操作   //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response e ...

  7. oc字符串+数组+字典操作题目

    1. 判断中间目录是否存在 (10分) 比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng" 返回:YES 传入字符串 ...

  8. Swift 循环、数组 字典的遍历

    import Foundation // 数组声明 var arr = [String]() // 数组循环添加项 ...{ arr.append("Item \(index)") ...

  9. swift学习之数组

    首先数组的定义:以有序的方式存储同样类型的值 (1)数组的简写(shorthand)语法 你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型.也能够通过 ...

随机推荐

  1. SQL执行效率和性能测试方法

    对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...

  2. 程序包com.sun.image.codec.jpeg不存在 问题的完美解决

    原文地址:http://my.oschina.net/zb0423/blog/86507 在使用Hudson进行打包的过程中,因为我们使用了一个pdf文件产生缩略图的功能,倒置添加的源码文件在mave ...

  3. 最全的Android源码目录结构详解

    Android 2.1|-- Makefile|-- bionic                        (bionic C库)|-- bootable                (启动引 ...

  4. ADF_General JSF系列1_创建一个简单的JSF Application

    2015-02-17 Creatd By BaoXinjian

  5. YCbCr;YUV;RGB

    1.  来源的差异 yuv色彩模 型来源于rgb模型,该模型的特点是将亮度和色度分离开,从而适合于图像处理领域. 应用:basic color model used in analogue color ...

  6. 深入Java集合学习系列:HashMap的实现原理

    1.    HashMap概述: HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变 ...

  7. PHP每日签到时怎么实现

    以淘宝网领取淘金币的签到系统为例:目标:第一天签到增加5个积分:第二天连续签到则增加8个积分:第三天连续签到,增加11个积分,第 四天连续签到,增加15个积分:第五天连续签到,增加19个积分:第六天连 ...

  8. NoSQL与关系型数据库比较

    虽然09年出现了比较激进的文章<关系数据库已死>,但是我们心里都清楚,关系数据库其实还活得好好的,你还不能不用关系数据库.但是也说明了一个事实,关系数据库在处理WEB2.0数据的时候,的确 ...

  9. java多线程之生存者与消费者(Java编程思想)

    1.通过wait() 与 Notify实现 package Produce; import java.util.concurrent.ExecutorService; import java.util ...

  10. Python开发专业工具推荐

    PyCharm,jetbrains公司出品,必是精品!! 版本:2016.3.1 下载:https://www.jetbrains.com/pycharm/download/#section=wind ...