Swift中的字符串,第二篇,基本操作。其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P):

首先,我们要记得使用字符串最常用的两个参数:下标(Index)和范围(Range),几乎所有API都要用到它们

  1. let offset = str.startIndex.advancedBy(2)// offset: 3rd char
  2. let range = Range(start: str.startIndex.advancedBy(3), end: str.endIndex.advancedBy(-2))// range: 3..<6, "345"

强制类型转换

  1. let n = Int(str)!
  2. String("the number is \(n)")
  3. String(format:"%.2f, %i", 9.1, 304)

内容反转

  1. String(str.characters.reverse())

删除和部分删除

  1. str.removeRange(range)
  2. str.removeAtIndex(offset)
  3. String(str.characters.dropFirst())
  4. String(str.characters.dropFirst(3))
  5. String(str.characters.dropLast())
  6. String(str.characters.dropLast(3))
  7. //以上对character的操作不改变原来的值!
  8. // 删除头尾空白字符
  9. " I love you ".stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
  10. // 删除头尾字符集
  11. " I love you, too!".stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: ",. !"))
  12. //清空
  13. str.removeAll()

获取固定位置的子串

  1. str.substringToIndex(offset)
  2. str.substringFromIndex(offset)
  3. str.substringWithRange(range)
  4. str[range]

分割

  1. st = "<123, test2,???> <测试: 数据 .>"
  2. // 用固定字符分割
  3. str.componentsSeparatedByString(" ")
  4. // 用固定字符集分割
  5. str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: ", ."))

过滤/查找替换

使用替换字符串的API,让替换的目标字符串为空即为过滤

  1. // 替换固定位置子串
  2. str.stringByReplacingCharactersInRange(range, withString: "!!!")
  3. // 查找所有匹配并替换/过滤
  4. str.stringByReplacingOccurrencesOfString("???", withString: "~")
  5. str.stringByReplacingOccurrencesOfString(" ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
  6. // 过滤字符集合(分割后合并)
  7. let arr = str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString:"-<>"))
  8. arr.joinWithSeparator("")

合并/拼接

  1. s1 + s2 + s3
  2. str.appendContentsOf("123")
  3. str.stringByAppendingString("000") //不改变原值!
  4. str.stringByAppendingFormat("- num %d ", 100) //不改变原值!
  5. // 以固定字符串为分隔符拼接
  6. [str, str, str].joinWithSeparator("\n")

插入

  1. str.insert(" ", atIndex: offset)
  2. str.insertContentsOf(" hello".characters, at: offset)
  3. str.replaceRange(Range( start:offset, end: offset ), with: "???OK!!!")

判断前缀或后缀

  1. str.hasPrefix("01")
  2. str.hasSuffix("567")

比较字符串

  1. s1.characters.elementsEqual(s2.characters)
  2. str.characters.elementsEqual("01234567".characters)
  3. s1 == s2
  4. "111" < "222"

匹配字符串

  1. str.rangeOfString("efg")
  2. str.rangeOfString("efg", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)

固定位置的部分替换

  1. str.replaceRange(range, with: "test_for_replace")
  2. str.stringByReplacingCharactersInRange(range, withString: "哈哈:smile:Tes\nt")

Swift2.0 中的String(二):基本操作的更多相关文章

  1. Swift2.0 中的String(三):类型转换

    本系列第三篇,String相关的类型转换.其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P): Swift2.0 中的String(一 ...

  2. Swift2.0 中的String(一):常用属性

    字符串算是平常用的比较多.花样也比较多的一个类型,昨天有空把相关的一些常用操作都写了一遍,总结出来.其实iOS里面的字符串更复杂,还有NSString系列等等,那些API太多将来需要用的时候再慢慢学. ...

  3. List转String数组 collection.toArray(new String[0])中new String[0]的语法解释

    Collection的公有方法中,toArray()是比较重要的一个. 但是使用无参数的toArray()有一个缺点,就是转换后的数组类型是Object[]. 虽然Object数组也不是不能用,但当你 ...

  4. collection.toArray(new String[0])中new String[0]的作用

    new string[0]的作用 比如:String[] result = set.toArray(new String[0]); Collection的公有方法中,toArray()是比较重要的一个 ...

  5. Swift2.0语言教程之Swift2.0语言中的标准函数

    Swift2.0语言教程之Swift2.0语言中的标准函数 Swift2.0中的标准函数 函数除了可以根据参数列表的有无分为无参函数和有参函数,还可以从定义角度分为用户自定义函数和标准函数两种.以上的 ...

  6. (IOS)Swift2.0 Radio 程序分析

    本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源项目Swift Radio的研究心得. 项目地址:https://github.com/swiftcodex/Swift-Rad ...

  7. [Swift2.0系列]Defer/Guard 基础语法

    1.Defer Swift2.0中加入了defer新语法声明.defer译为延缓.推迟之意.那么在Swift2.0中它将被应用于什么位置呢?比如,读取某目录下的文件内容并处理数据,你需要首先定位到文件 ...

  8. Swift2.0语言教程之函数的返回值与函数类型

    Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...

  9. Swift2.0 UITextView 和 UITextFile 的使用

    在Swift2.0中,UITextFile 和 UITextView 的使用总体上和在OC中是一样的,今天只是给大家一段代码,然后说UITextView里面的光标位置的问题.先看他们使用的简单的代码 ...

随机推荐

  1. Treap树

    Treap树算是一种简单的优化策略,这名字大家也能猜到,树和堆的合体,其实原理比较简单,在树中维护一个"优先级“,”优先级“ 采用随机数的方法,但是”优先级“必须满足根堆的性质,当然是“大根 ...

  2. 【脚本语言对比】BASH,PERL以及PYTHON

    据说: BASH能调用linux的应用程序,这是其最大的优点,也是其最大的缺点. PERL那复杂的语法确实看得让人想吐. python很优美,但是据说对正则的支持不够,没有perl强大. 总结一下学习 ...

  3. 使用arm开发板搭建无线mesh网络(一)

    由于项目的需要,老板让我使用arm开发板(友善之臂的tiny6410)搭建无线mesh网络.一般而言,无线自组织网络的网络设备都是由用户的终端设备来充当,这些终端设备既要处理用户的应用数据,比如娱乐, ...

  4. matlab 画平面

    y = :; z = ones(); surf(x,y,z):

  5. DataTrigger的几个用法

    1.用在textbox等输入控件上,验证输入是否合法. <Window.Resources> <Style TargetType="TextBox"> &l ...

  6. C++11初始化列表

    [C++11之初始化列表] 在C++03中,在严格遵守POD的定义和限制条件的结构及类型上可以使用初始化列表(initializer list),构想是结构或是数组能够依据成员在该结构内定义的顺序通过 ...

  7. OSPF虚链路配置.示例1

      在OSPF 网络中,区域0为骨干区域,其它的为非骨干区域,非骨干区域必须与骨干区域直接相连. 根据拓扑图可看到区域1与骨干区域0直接相连而区域2与骨干区域没有直接相连,这种情况下我们可以创建一条虚 ...

  8. Makefile基础

    1.规则 规则定义格式如下 目标 : 条件1 条件2 ... 命令1 命令2 ... 隐含规则和模式规则(略) 2.变量 Makefile变量像C的宏定义一样,代表一串字符,在取值的地方展开. 1)两 ...

  9. XSLT模糊查询函数contains不区分大小写,for-each排序

    代码如下: <xsl:for-each select="//NewDataSet/map/area[contains(translate(@alt, 'ABCDEFGHIJKLMNOP ...

  10. Windows下使用NIF扩展Erlang方法

    在Erlang中,NIF(Native Implemented Function)被用来扩展erlang的某些功能,一般用来实现一些erlang很难实现的,或者一些erlang实现效率不高的功能. N ...