Swift 字符串是字符有序集合,如“Hello, World!”,它们是由 Swift 的 String 数据类型表示,这也代表字符类型值的集合。
创建字符串
// 定义字符串的方法
var sj = ""
var sj1:String
var sj2 =String()
注:使用let创建常量,则该字符串不可以被修改。使用var定义变量字符串,字符串可以被修改
可以通过使用一个空字符串或创建 String 类的一个实例来创建一个空的字符串,如下所示。还可以检查一个字符串是否为空,使用布尔属性 isEmpty。
var stringA = "" if stringA.isEmpty { println( "stringA is empty" ) } else { println( "stringA is not empty" ) } // Empty string creation using String instance let stringB = String() if stringB.isEmpty { println( "stringB is empty" ) } else { println( "stringB is not empty" ) }当上述代码被编译和执行时,它产生了以下结果:
stringA is empty stringB is empty判断字符串是否相等
var str1 = "Hello"
var str2 = "Hello word"
if str1 == str2 {
println("str1 等于 str2")
}else{
println("str1 不等于 str2")
}
函数检查给定的参数字符串是否以 string 为后缀
var str1 = "hello"
var str2 = "h"
str1.hasSuffix(str2)
例子:
let romeoAndJuliet = [
"Act 1 Scene 1: Verona, A public place",
"Act 1 Scene 2: Capulet's mansion",
"Act 1 Scene 3: A room in Capulet's mansion",
"Act 1 Scene 4: A street outside Capulet's mansion",
"Act 1 Scene 5: The Great Hall in Capulet's mansion",
"Act 2 Scene 1: Outside Capulet's mansion",
"Act 2 Scene 2: Capulet's orchard",
"Act 2 Scene 3: Outside Friar Lawrence's cell",
"Act 2 Scene 4: A street in Verona",
"Act 2 Scene 5: Capulet's mansion",
"Act 2 Scene 6: Friar Lawrence's cell"
]
for scenc inromeoAndJuliet {
if scenc.hasSuffix("Act 1 "){
println(scenc)
}
}
var str =String(count:4,repeatedValue:"s"),count表明该字符串的长度为4 ,repeatedValue重复值为s
Unicode字符串
Swift 提供了for-in循环来遍历String的每个字符,但如果程序需要访问String底层存储的Unicode值,可以通过遍历在 UTF8 ,UTF16 和unicodeScalarView属性访问字符串的 UTF-8 ,UTF-16和 UTF-32表示,如下面的示例:import Cocoa var unicodeString = "Dog‼" println("UTF-8 Codes: ") for code in unicodeString.utf8 { print("\(code) ") } print("\n") println("UTF-16 Codes: ") for code in unicodeString.utf16 { print("\(code) ") }
当上述代码被编译和执行时,它产生了以下结果:
UTF-8 Codes: 68 111 103 226 128 188 240 159 144 182 UTF-16 Codes: 68 111 103 8252 55357 56374
从该上面代码可以看出unicodeString字符串前面的三个引文字符,物流获取哪种形式的Unicode编码程序返回的值都一样
let myString = "Wait a moment, please." let newString = myString.uppercaseString 转大写 //The string is now "WAIT A MOMENT, PLEASE." let myString = "Wait a moment, please." let newString = myString.lowercaseString 转小写 // The string is now "wait a moment, please.
字符串是否包含其他字符// 3.将首字母大写
var str:String = "sunjing"
str.capitalizedString
var myString = "This is a string test"
if myString.rangeOfString("string") { 返回的是该字符串范围的值为可选类型,不存在则返回nil从前向后搜索
println("exists")
}
var str:String?
str = "This is a string test - string "
// 从后向前搜索
str?.rangeOfString("string", options: NSStringCompareOptions.BackwardsSearch)
还有不区分大小写等等...
字符串统计个数
var myString = "Here is my string, lets count the characters!" count(myString)字符串去空格
var myString = " Let's trim the whitespace "
var newString = myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
字符串分割为字符串数组
//单一分隔符:只有一种分割符 var myString = "Berlin, Paris, New York, San Francisco" //1.隐式定义字符串数组 var myArray = myString.componentsSeparatedByString(",") //2.显示定义字符串数组 var myArray2 : String[] = myString.componentsSeparatedByString(", ") for em in myArray2 { print(em) //Berlin Paris New York San } //多重分割符:有2个或两个以上分隔符 var myString2 = "One-Two-Three-1 2 3" var array2:String[] = myString2.componentsSeparatedByCharactersInSet(NSCharacterSet (charactersInString: "- ")) //["One", "Two", "Three", "1", "2", "3"]字符串转换为NSData
let myString = "String to encode"
let string: NSString = myString
let data = string.dataUsingEncoding(NSUTF8StringEncoding)
将字符串转换成Int
var str = "1"
str.toInt()
字符串的拼接
var str =String(count:4,repeatedValue:c1)
println(str)
str +="aaa"
var sq ="sss"
sq.append(c1)
Rang 在字符串的用法
var xjj = "Welcome to Play Swift! Step by Step learn Swift language from now !"
let strRange = Range<String.Index>(start: xjj.startIndex, end: xjj.endIndex)
let startIndex = xjj.startIndex
// 重开始到第10个字符的索引
let endIndex = advance(startIndex, 10)
let searchRange = Range<String.Index>(start: startIndex, end: endIndex)
xjj.rangeOfString("Step", options: NSStringCompareOptions.CaseInsensitiveSearch, range: searchRange)
var toIndex = advance(xjj.startIndex, 4)
var fromIndex = advance(xjj.startIndex, 14)
//1.从目标标识位后一个字符开始截取余下的字符串
xjj.substringFromIndex(fromIndex)
//2.从第一个字符截取到目标标识位
xjj.substringToIndex(toIndex)
// 根据字符串的索引范围截取字符串
xjj.substringWithRange(searchRange)
// 在制定索引后插入字符串
var insertIndex = advance(xjj.startIndex, 22)
xjj.insert("!", atIndex: insertIndex)
// 根据索引范围移除字符串
xjj.removeAtIndex(insertIndex)
str.removeRange(searchRange)
// 替换字符串
var replaceEndIndex = advance(xjj.startIndex, 13)
xjj.stringByReplacingCharactersInRange(searchRange, withString: "ssss")
var str = "Hello, playground"
var range = str.rangeOfString("play")
range?.startIndex
str.removeRange(range!)
// 删除指定字符串
var str = "Hello, playground"
var range = str.rangeOfString("play")
range?.startIndex
str.removeRange(range!)
字符串函数和操作符
Swift 支持多种方法,和运算符相关的字符串:
S.No | 函数/操作符及用途 |
---|---|
1 | isEmpty 返回一个布尔值,确定该字符串是否为空 |
2 | hasPrefix(prefix: String) 函数检查给定的参数字符串是否以 string 为前缀 |
3 | hasSuffix(suffix: String) 函数检查给定的参数字符串是否以 string 为后缀 |
4 | toInt() 函数将数字字符串值转换成整数 |
5 | count() 全局函数用来计算字符串中的字符数 |
6 | utf8 属性返回一个字符串的 UTF-8 表示 |
7 | utf16 属性返回一个字符串的 UTF-16 表示 |
8 | unicodeScalars 属性返回一个字符串的 Unicode 标表示 |
9 | + 运算符用来连接两个字符串,或者一个字符串和一个字符或两个字符 |
10 | += 操作符要追加一个字符串或字符到一个现有的字符串 |
11 | == 操作符以确定两个字符串是否相等 |
12 | < 操作符进行逐一比较,计算以确定一个字符串是否为小于另一个 |
13 | == 操作符以确定两个字符串是否相等 |