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

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

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

强制类型转换

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

内容反转

String(str.characters.reverse())

删除和部分删除

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

获取固定位置的子串

str.substringToIndex(offset)
str.substringFromIndex(offset)
str.substringWithRange(range)
str[range]

分割

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

过滤/查找替换

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

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

合并/拼接

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

插入

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

判断前缀或后缀

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

比较字符串

s1.characters.elementsEqual(s2.characters)
str.characters.elementsEqual("01234567".characters)
s1 == s2
"111" < "222"

匹配字符串

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

固定位置的部分替换

str.replaceRange(range, with: "test_for_replace")
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. PHP相关图书推荐

    PHP和MySQL Web开发(原书第4版) 作      者 [澳] Luke Welling,[澳] Luke Welling 著:武欣 等 译 出 版 社 机械工业出版社 出版时间 2009-0 ...

  2. Treap树

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

  3. android读取data下得数据

    拥有Root权限的情况 adb shell su cd  /data/data/com.package 然后就可以直接读取 没有Root的情况 adb shell run-as com.package ...

  4. Ubuntu关闭图形界面

    方法一 sudo /etc/init.d/lightdm stop 方法二 init 3 关闭图形界面 init 5 开启图形界面

  5. 《Java数据结构与算法》笔记-CH4-6优先级队列

    /** * 优先级队列 * 效率:插入O(n),删除O(1).第12章介绍如何通过堆来改进insert时间 */ class PriorityQueue { private int maxSize; ...

  6. 一个相当好的状态机(DFA, 确定有限状态机)的编码实现,相当简洁漂亮

    从jsoup而来,文章见: https://github.com/code4craft/jsoup-learning/blob/master/blogs/jsoup4.md 状态机 Jsoup的词法分 ...

  7. 第三百四十四天 how can I 坚持

    三言诗,把自己的心情,想要说的话用三句话诗意的表达出来.像: 烦===>好想睡一觉,待日落,盼天明. 愁====>待到花开花落,闲庭信步,蹋碎一世忧愁. 三句话,可以表达的很好. 老是感觉 ...

  8. Shell 脚本基本操作练习

    这里主要是熟悉了shell的基本操作,包括变量赋值引用修改.函数的使用.信号的获取及一些判断方法等,具体详见代码: #!/bin/sh str="Hello World !" ec ...

  9. 用完成例程(Completion Routine)实现的重叠I/O模型

    /// 用完成例程(Completion Routine)实现的重叠I/O模型 /// 异步IO模型 /// 用完成例程来实现重叠I/O比用事件通知简单得多.在这个模型中,主线程只用不停的接受连接 / ...

  10. cf754 A. Lesha and array splitting

    应该是做麻烦了,一开始还没A(幸好上一次比赛水惨了) #include<bits/stdc++.h> #define lowbit(x) x&(-x) #define LL lon ...