Swift中的字符串和OC的是可以无缝桥接的.其中的一些细节还是要说的.
Swift中的字符串不像OC中的需要添加@前缀,而是直接使用双引号("").
let someString = "aaa"
let someString2: String = "aaa"
上面两种写法是一样的.编译器会自动推断类型.这点以后就不再提了.应该会习惯的.
任何创建一个空的字符串呢?有两种方法:
var emptyString = ""
var emptyString2 = String()
而且Swift提供了一个属性,可以很简单的判断字符串是否为空.
if emptyString2.isEmpty {
print("字符串为空")
}
字符串拼接
Swift中的字符串拼接和java中的很像,可以直接进行加运算.因为在Swift中的+不在是加法运算.
var str1 = "a"
str1 += "b"
// str1这时为"ab"
需要注意的是常量字符串是不能进行加操作的,因为常量是不能修改的.
遍历字符串
for character in "Dog!🐶".characters {
print(character)
}
** 追加 **
str1.appendContentsOf("dog")
// 当然不如之间进行加方便
使用索引访问
var str = "dog"
// 我们可以很轻松的根据下标来获取字符串中对应的字符
// 最容易获取到的是start和end,要注意endIndex会出现下标越界的问题,对OC有经验的话,应该不难理解.
let ch1 = str[str.characters.startIndex] // d
let ch2 = str[str.characters.startIndex.successor()] // o
// advancedBy()参数是正数则向后取,参数为负数则向前取
let ch3 = str[str.characters.endIndex.advancedBy(-1)] //g
** 插入和删除 **
str.insert("m", atIndex: str.characters.startIndex) // 插入字符 m
str.insertContentsOf("MY".characters, at: str.characters.startIndex) // 插入字符串 MY
str.removeAtIndex(str.characters.startIndex.advancedBy(2)) // 删除字符 m
str.removeRange(str.characters.startIndex..<str.characters.startIndex.advancedBy(2)) // 删除范围
** 相等 **
在OC中判断字符串是相同的我们会使用isEqual方法.在Swift中我们可以直接使用 == 或者 != 来判断字符串是否相同
** 前后缀 **
str.hasPrefix("d") // 是否有前缀 d
str.hasSuffix("g") // 是否有后缀 g
** 与NSString桥接 **
有一些方法是OC特有的,在没有导入Foundation 或者UIKit之前,会报错.导入框架之后再能正常使用,这点需要注意
let text = "0123456789"
if let range = text.rangeOfString("5",
options: .BackwardsSearch) {
let suffix = String(text.characters.suffixFrom(range.endIndex))
}