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. Vs2015 win10虚拟机启动问题:无法设置UDP端口 解决方法 合集(转载)

    刚装的vs2015 社区版 出现这个问题,wp8.1和win10m模拟器都无法启动,找了好久找到的解决方案,放这儿供大家参考,免得大家像我一样走弯路: Windows Phone emulator n ...

  2. leetcode:Longest Substring Without Repeating Characters

    Given a string, find the length of the longest substring without repeating characters. For example, ...

  3. 该不该将变量设为 null ?

    该不该将变量设为 null ? 对于引用类型的变量,在什么时候需要将其显式设为 null ,在什么时候不需要呢? 局部变量 对于局部变量,在方法结束的时候,变量就会失效,变量指向的对象引用也会减少一个 ...

  4. Android中的颜色值RGB对照表表

    Android中颜色值是通过红(Red).绿(Green).蓝 (Blue)三原色,以及一个透明度(Alpha)值来表示的,颜色值总是以井号(#)开头,接下来就是Alpha-Red-Green-Blu ...

  5. Camel In Action 阅读笔记 第一章 认识Camel 1.1 Camel 介绍

    1.1 Camel 介绍 Camel 是一个为了您的项目集成变得高效有趣的集成框架,Camel 项目在2007年初开始的,相对来说它还比较年轻,但它已然是一个非常成熟的开源项目,它所使用的是Apach ...

  6. 10 个你需要了解的最佳 javascript 开发实践

    原文:Top 10 “Must Follow” JavaScript Best Practices Javascript 的很多扩展的特性是的它变得更加的犀利, 同时也给予程序员机会创建更漂亮并且更让 ...

  7. POJ 3659 Cell Phone Network (树dp)

    题目链接:http://poj.org/problem?id=3659 给你一个树形图,一个点可以覆盖他周围连接的点,让你用最少的点覆盖所有的点. dp[i][0]表示用i点来覆盖,dp[i][1]表 ...

  8. How Tomcat Works(十一)

    本文接下来分析tomcat的类载入器,tomcat需要实现一个自定义的载入器,而不能使用系统类载入器 (1)限制serlvet访问当前运行的java虚拟机中环境变量CLASSPATH指明的路径下的所有 ...

  9. 解决CSS各种IE各种兼容问题(Google解决方案)

    google的 ie7 – js中是一个JavaScript库(解决IE与W3C标准的冲突的JS库),使微软的Internet Explorer的行为像一个Web标准兼容的浏览器,支持更多的W3C标准 ...

  10. Custom ReadOnlyProperty【PluraSight】

    Limited functionality: Not settable No data binding No validation No animation No Inheritance When t ...