首页 > 代码库 > Swift学习笔记(4)--字符串及基本使用

Swift学习笔记(4)--字符串及基本使用

String是例如“hello, world”,“海贼王” 这样的有序的Character(字符)类型的值的集合,通过String类型来表示。

Swift 的String类型与 Foundation NSString类进行了无缝桥接。如果您利用 Cocoa 或 Cocoa Touch 中的 Foundation 框架进行工作。所有NSString API 都可以调用您创建的任意String类型的值。除此之外,还可以使用本章介绍的String特性。您也可以在任意要求传入NSString实例作为参数的 API 中使用String类型的值作为替代

 注:Swift 的String类型是值类型。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。

 

1.字符串定义

  var s = "abc"

  var s1:String = "abc"  

 

?
1
2
3
// 两个字符串均为空并等价。
var emptyString = ""               // 空字符串字面量
var anotherEmptyString = String()  // 初始化 String 实例

 

  字符串字面量可以包含以下特殊字符:

    • 转义字符\0(空字符)、\\(反斜线)、\t(水平制表符)、\n(换行符)、\r(回车符)、\"(双引号)、\‘(单引号)。
    • 单字节 Unicode 标量,写成\xnn,其中nn为两位十六进制数。
    • 双字节 Unicode 标量,写成\unnnn,其中nnnn为四位十六进制数。
    • 四字节 Unicode 标量,写成\Unnnnnnnn,其中nnnnnnnn为八位十六进制数。
?
1
2
3
4
5
let wiseWords = "\"我是要成为海贼王的男人\" - 路飞"
// "我是要成为海贼王的男人" - 路飞
let dollarSign = "\x24"                // $,  Unicode 标量 U+0024
let blackHeart = "\u2665"              // ?,  Unicode 标量 U+2665
let sparklingHeart = "\U0001F496"    // ??, Unicode 标量 U+1F496

 

2.字符串拼接

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//字符串拼接
var x = "x"
var y = "y"
var z = x + y
var m = z + "m"
var n = "n"
n += m
 
//使用\()完成字符串的插值
var result = "\(x)==\(y)==\(z)==\(m)==\(n)"
println(result)//结果:x==y==xy==xym==nxym
 
//字符串与字符拼接
let s1 = "hello"
let c1: Character = "!"
let plus1 = s1 + c1        // 等于 "hello!"
let plus2 = c1 + s1        // 等于 "!hello"

  

3.字符串遍历

?
1
2
3
4
5
var myString = "This is a string"
 
for character in myString{
   println(character)
}

  

4.字符个数统计

?
1
2
var myString = "Here is my string, lets count the characters!"
println(countElements(myString))

  

5.字符串比较 & 是否包含前后缀

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var check1:String = "Swift is good!"
var check2:String = "Swift is good!"
 
//字符串是否相等
if check1 == check2 {
    println("check1 = check2")
} else {
    println("check1 != check2")
}
 
//是否包含前缀
var preCheck = "Swift"
if check1.hasPrefix(preCheck) {
    println("包含前缀")
}
 
//是否包含后缀
var sufCheck = "good!"
if check1.hasSuffix(sufCheck) {
    println("包含后缀")
}

  

6.大小写转换

?
1
2
3
4
5
6
7
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."

  

7.字符串是否包含其他字符串

?
1
2
3
4
var myString = "This is a string test"
if myString.rangeOfString("string") {
    println("exists")
}

  

8.字符串截取

?
1
2
3
4
5
6
7
8
9
10
//截取字符串的标识位从1开始计数
let myString = "ABCDEFGHI"
 
//1.从目标标识位后一个字符开始截取余下的字符串
let mySubstring = (myString.substringFromIndex(2))
println(mySubstring)    // "CDEFGHI"
 
//2.从第一个字符截取到目标标识位
let mySubstring2 = (myString.substringToIndex(4))
println(mySubstring2)   // "ABCD"

  

9.字符串去空格

?
1
2
var myString = "    Let‘s trim the whitespace    "
var newString = myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

  

10.字符串分割为字符串数组

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//单一分隔符:只有一种分割符
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"]

  

11.字符串转换为NSData

?
1
2
3
let myString = "String to encode"
let string: NSString = myString
let data = http://www.mamicode.com/string.dataUsingEncoding(NSUTF8StringEncoding)

  

 

 

参考文章:http://www.learnswiftonline.com/reference-guides/string-reference-guide-for-swift/