首页 > 代码库 > 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/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。