今天总结下swift中对于字符串的操作,记录下工作中常用的。。。
1、字符串的声明
关于字符串的声明可以标注类型,也可以不标注,如
// 1、字符串声明
var emptyStr : String = " "//声明一个空字符串
var str : String = "Hello World"//定义变量类型为String
var str1 = "Hello World"//未定义变量类型,在swift中会根据值推测变量的类型为String
//判断字符串是否为空,若为空则为true,否则为false
let bool : Bool = emptyStr.isEmpty
判断字符串是否为空,除了上面这个方法,还有一种笨办法:在定义变量类型时允许变量为空,则可以使用 xx == nil 的方式来判断
var str3 : String?
if str3 == nil {
str3 = "Hello World"
}
其中代码中的“ ? ”表示该变量是一个可选值Optional,其值可以为nil,也可以有具体的值。一旦声明为可选值,如果没有指定值,默认是nil,可用if进行该字符串是否有值的判断
2、字符串的拼接
字符串的连接主要有两种方式:一种是直接在字符串后面添加字符串,另一种是将字符串数组拼接成一个字符串
// 2、字符串拼接
let str = "Hello"
let str2 = "world"
let str3 = str + str2//利用+直接将字符串拼接在一起,比较直接
let array : [String] = ["aaa","bbb", "ccc"]
let arrayStr : String = array.joinWithSeparator("/")//将数组中的元素拼接成字符串
其拼接的结果如下
str3 Helloworld
arrayStr aaa/bbb/ccc
3、字符串的截取
字符串的截取是利用substringFromIndex、substringToIndex、substringWithRange这三个函数
<pre name="code" class="objc">// 3、字符串的截取
let str = "Hello World"
//substringFromIndex:是包括当前下标的值开始截取,到字符串最后停止
let ns1=str.substringFromIndex(str.startIndex.successor())
//substringToIndex:是截取到当前下标为止
let ns2=str.substringToIndex(str.endIndex.predecessor())
//substringWithRange: 截取指定范围内的字符串
let start = str.startIndex.advancedBy(2)
let end = str.startIndex.advancedBy(7)
let ns3=str.substringWithRange(Range(start: start, end: end))
</pre><p></p><pre>
截取的结果为:
ns1 ello World
ns2 Hello Worl
ns3 llo W
4、字符串的访问
字符串的访问可以通过下标来访问。主要有四种方式,分别为:
startIndex:表示字符串开始的下标
endIndex:表示字符串结束的下标
successor:用于上面两个下标调用,表示在原本下标的基础上+1,也就是下一个
predecessor:也是用于上面两下标调用,表示在原本下标的基础上-1,也就是前一个或上一个
<pre name="code" class="objc"> let str = "Hello World"
/*startIndex代表字符串开始的下标*/
str[str.startIndex]
/*endIndex代表字符串结束的下面 predecessor代表前一个*/
str[str.endIndex.predecessor()]
/*successor表示继续的也就是下一个*/
str[str.startIndex.successor()]
/*字符串不支持直接访问下标,需要使用advance函数转化,如果访问的下标超出字符串就会发出运行时错误*/
let index = str.startIndex.advancedBy(7)
str[index]
特别注意的是,在swift中的字符串不能直接访问下标,需要通过advance函数将下标值转换,主要原因是OC中下标的类型是Int,而在swift中,下标的类型是Index类型
运行结果如下:
str[str.startIndex] H
str[str.endIndex.predecessor()] d
str[str.startIndex.successor()] e
str[index] o
5、字符串的比较
字符串的比较主要包括三个方面:是否相等用“==”,xxx字符串开头是否包含xx用hasPrefix,xxx字符串结尾是否包括xx用hasSuffix。代码如下:
// 5 、字符串的比较
let str = "Hello"
let str1 = "World"
//比较两个字符串是否相等
if str1 == str {
print("str1 和 str 相等")
}else{
print("str1 和 str 不相等")
}
//判断字符串开头是否包含he
if(str.hasPrefix("He")) {
print("str 开头包含 He");
}
//判断字符串结尾是否包含ng
if(str1.hasSuffix("ld")) {
print("str1 结尾包含 ld");
}
6、其他操作
字符串的其他操作是指过滤和替换
// 6、其他操作
//过滤单个字符
var url = "http://cnews.chinadaily.com.cn/2016-06/21/content_25783045.htm"
var filtered = url.stringByReplacingOccurrencesOfString("/", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
print("filtered \(filtered)")
//替换 将/替换为?
url = "http://cnews.chinadaily.com.cn/2016-06/21/content_25783045.htm"
filtered = url.stringByReplacingOccurrencesOfString("/", withString: "?", options: NSStringCompareOptions.LiteralSearch, range: nil)
print("filtered \(filtered)")
其结果为:
filtered http:cnews.chinadaily.com.cn2016-0621content_25783045.htm
filtered http:??cnews.chinadaily.com.cn?2016-06?21?content_25783045.htm