Swift2-0基础_String(字符串)
2016-04-15 18:38
501 查看
// 字符串 字符串是值类型,常量变量赋值,在函数中传递会进行值拷贝 let name = "Kermit" let word = "\"I am a boy\" __kermit" print(word) print("来个复杂点的输出\(word)") let emptyString1 = String() let emptyString2 = "" // 两个字符串都为空并且等价 if emptyString1.isEmpty { print("it is a empty string"); } // 可变字符串 var variableString = "boy" variableString += "and girl" //let constantString = "u" //constantString += "and me" // 常量不可被修改 // 计算字符数量 // 转义字符 \0 (空字符)、\\(反斜线)、\t (水平制表符)、\n (换行符)、\r (回车符)、\" (双引号)、\' (单引号) let langString = "I am a sting aoeyuvbpmfdtnlgkhjqxuvwxyz" print(langString.characters.count) // 扩展方法 extension String { func KTLength() -> Int { return self.characters.count } } print("String的扩展方法的输出:字符串的字符数\(langString.KTLength())") // 借用Foundation的方法 “Swift 的String类型与 Foundation NSString类进行了无缝桥接” 其他数据类型也都一样 let testString:NSString = "u are pig" print("借用Foundation的接口\(testString.length)") // 字符串拼接 let string1 = "hello" let string2 = "world" var string3 = string1 + string2 var string4 = "say" string4 += string3 // 拼接在尾部 let oneCharacter:Character = "U" string4.append(oneCharacter) // 字符串插值 let num1 = 5 let message = "\(num1)+5=\(num1+5)" //5+5=10 // 字符串比较 let title1 = "123456" let title2 = "123456" if title1 == title2 { print("两个字符串相等") } // 检测字符串是否已固定的格式开头或者结尾(前缀和后缀) let test1 = "abcedf" let test2 = "defabc" if test1.hasPrefix("abc") { print("test1 以 abc 开头") } if test2.hasSuffix("abc") { print("test2 以 abc 结尾") } // 大小写字符转换 let normal = "I am a Boy" let shouty = normal.uppercaseString let whispered = normal.lowercaseString // 打印字符 for character in "test character ".characters { print("测试打印字符\(character)") } // 字符数组到字符串 let KermitCharacter:[Character] = ["K","e","r","m","i","t"] let KermitString = String(KermitCharacter) print(KermitString) // 访问和修改字符串 可以通字符串的属性和方法来访问和读取它,当然也可以用下标语法完成 /* // 字符串索引 “每一个String值都有一个关联的索引(index)类型,String.Index,它对应着字符串中的每一个Character的位置” // Swift 的字符串不能用整数(integer)做索引 // 不同的字符可能会占用不同数量的内存空间,所以要知道 Character 的确定位置,就必须从 String 开 头遍历每一个 Unicode 标量直到结尾 使用 startIndex 属性可以获取一个 String 的第一个 Character 的索引。 使用 endIndex 属性可以获取最后一个 Character 的后一个位置的索引。 因此, endIndex 属性不能作为一个字符串的有效下标。如果 String 是空串, artIndex 和 endIndex 是相等的。 通过调用 String.Index 的 predecessor() 方法,可以立即得到前面一个索引, 调用 successor() 方法可以立即得 到后面一个索引。 任何一个 String 的索引都可以通过锁链作用的这些方法来获取另一个索引,也可以调用 cedBy(_:) 方法来获取。 但如果尝试获取出界的字符串索引,就会抛出一个运行时错误 */ let detailString1 = "test1" print(detailString1[detailString1.startIndex]) // t print(detailString1[detailString1.endIndex.predecessor()]) // 1 print(detailString1[detailString1.startIndex.successor()]) // e let index = detailString1.startIndex.advancedBy(2) print(detailString1[index]) // s // 使用 characters 属性的 indices 属性会创建一个包含全部索引的范围( Range ),用来在一个字符串中访问单个字符 for index1 in detailString1.characters.indices { print("遍历\(detailString1[index1])") } // 插入和删除 var insertTest = "hello world" // 1 调用 insert(_:atIndex:) 方法可以在一个字符串的指定索引插入一个字符 insertTest.insert("!", atIndex: insertTest.endIndex) print(insertTest) // hello world! // 2 调用 insertContentsOf(_:at:) 方法可以在一个字符串的指定索引插入一个字符串 insertTest.insertContentsOf("字符串".characters, at: insertTest.startIndex) print(insertTest) // 字符串hello world! // 3 调用 removeAtIndex(_:) 方法可以在一个字符串的指定索引删除一个字符 insertTest.removeAtIndex(insertTest.startIndex) print(insertTest) // 符串hello world! // 4 调用 removeRange(_:) 方法可以在一个字符串的指定索引删除一个子字符串 let range = insertTest.startIndex.advancedBy(0) ..< insertTest.startIndex.advancedBy(2) insertTest.removeRange(range) print(insertTest) // hello world!
相关文章推荐
- 用swift和Accelerate的快速傅里叶变换(FFT)来实现对波形的整形
- 使用swift开发Cordova插件
- Ubuntu上配置Swift的开发环境,基于JetBrains的Clion编辑器
- Swift中闭包实现OC的block传值
- [Swift 开发] UICollectionView的用法
- Swift笔记:类和结构体
- swift语言的Block
- swift和oc的混编
- Swift笔记:枚举
- 窥探 Swift 之别具一格的 Struct 和 Class
- 使用swift开发Cordova插件
- Swift笔记:闭包
- Swift类和结构体详解
- swift使用xib绘制UIView
- Swift - 按钮(UIButton)的用法
- Swift写的超级简单的五子棋
- Swift写的超级简单的五子棋
- Swift:playground
- Swift 取子字符串
- Swift中文教程(一)基础数据类型