博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift_字符串详解(String)
阅读量:5311 次
发布时间:2019-06-14

本文共 12919 字,大约阅读时间需要 43 分钟。

Swift_字符串详解(String)


类型别名

//类型别名fileprivate func testTypeAliases() {    let index = String.Index.self    print("\(index)")        let utf8index = String.UTF8Index.self    print("\(utf8index)")        let utf16index = String.UTF16Index.self    print("\(utf16index)")        let unicodeScalarIndex = String.UnicodeScalarIndex.self    print("\(unicodeScalarIndex)")        let greeting = "XuBaoAiChiYu"    print(greeting[greeting.startIndex])//输出字符串的第一个字符    print(greeting[greeting.characters.index(before: greeting.endIndex)])//输出字符串的最后一个字符    print(greeting[greeting.characters.index(after: greeting.startIndex)])//输出字符串的第二个字符    print(greeting[greeting.characters.index(greeting.startIndex, offsetBy: 7)])//输出字符串的第八个字符        /*  print          Index     Index     Index     Index     X     u     u     C          */}

初始化

//初始化fileprivate func testInitializers() {        //初始化    var string: String = String()    string = "XuBaoAiChiYu"        print(string)        //char 初始化    let char: Character = "X"    string = String(char)    print(string)    string = String.init(char)    print(string)    string = "\(char)"    print(string)        // 通过CharacterView    let charView: String.CharacterView = String.CharacterView("XuBaoAiChiYu")    string = String(charView)    print(string)        //通过 utf-16 编码    let utf16: String.UTF16View = string.utf16    string = String(describing: utf16)    print(utf16)        //通过 utf-8 编码    let utf8: String.UTF8View = string.utf8    string = String(describing: utf8)    print(utf8)        //通过多个字符串组合生成    string = String(stringInterpolation: "xu", "bao")    print(string)        //char初始化 连续count次    string = String(repeating: String(char), count: 6)    print(string)        //通过其他常用数据初始化    string = String(stringInterpolationSegment: true)    print(string)    string = String(stringInterpolationSegment: 24)    print(string)        // 通过NSString初始化,不推荐    string = NSString(string: "XuBaoAiChiYu") as String    print(string)    string = NSString.init(string: "XuBaoAiChiYu") as String    print(string)        // 组合生成    string = NSString(format: "%@", "XuBaoAiChiYu") as String    print(string)         /*  print          XuBaoAiChiYu     X     X     X     XuBaoAiChiYu     XuBaoAiChiYu     XuBaoAiChiYu     xubao     XXXXXX     true     24     XuBaoAiChiYu     XuBaoAiChiYu     XuBaoAiChiYu          */}

文件路径操作

//文件路径操作fileprivate func testWorkingWithPaths() {        var path = "xubaoaichiyu/ios/swift"    print(path)        //路径分割成熟数组    var pathComponents = (path as NSString).pathComponents    print(pathComponents)        //数组组合成路径    path = NSString.path(withComponents: pathComponents)    print(path)        //Document目录    let documents: [String] = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, .userDomainMask, true)    print(documents)    let documentPath: String = documents.first!    print(documentPath)        //寻找文件夹下包含多少个路径    var complete = documentPath.completePath(caseSensitive: true)    print(complete)        //寻找文件夹下包含指定扩展名的文件路径个数    var outName = ""    let filterTypes = ["txt", "plist"]    complete = documentPath.completePath(into: &outName, caseSensitive: true, matchesInto: &pathComponents, filterTypes: filterTypes)    print("completePathIntoString:\(complete)")    //添加路径    path = (documentPath as NSString).appendingPathComponent("test")    print(path)    //添加扩展    path = (path as NSString).appendingPathExtension("plist")!    print(path)        print("是否绝对路径:\((path as NSString).isAbsolutePath)")    print("最后一个路径名:\((path as NSString).lastPathComponent)")    print("扩展名:\((path as NSString).pathExtension)")        //去掉扩展名    var tempPath = (path as NSString).deletingPathExtension    print(tempPath)    //去掉最后一个路径    tempPath = (path as NSString).deletingLastPathComponent    print(tempPath)    //转%格式码    let allowedCharacters:CharacterSet = CharacterSet.controlCharacters    tempPath = path.addingPercentEncoding(withAllowedCharacters: allowedCharacters)!    print(tempPath)        //转可见    tempPath = (tempPath as NSString).removingPercentEncoding!    print(tempPath)        /*  print          xubaoaichiyu/ios/swift     ["xubaoaichiyu", "ios", "swift"]     xubaoaichiyu/ios/swift     ["/Users/caoxu/Documents"]     /Users/caoxu/Documents     4     completePathIntoString:1     /Users/caoxu/Documents/test     /Users/caoxu/Documents/test.plist     是否绝对路径:true     最后一个路径名:test.plist     扩展名:plist     /Users/caoxu/Documents/test     /Users/caoxu/Documents     %2F%55%73%65%72%73%2F%63%61%6F%78%75%2F%44%6F%63%75%6D%65%6E%74%73%2F%74%65%73%74%2E%70%6C%69%73%74     /Users/caoxu/Documents/test.plist          */    }

文件读写操作

//文件读写操作fileprivate func testFile() {        var string = "XuBaoAiChiYu"        //Document目录    let documents = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)    var path = documents.first!    path = (path as NSString).appendingPathComponent("xubaoaichiyu")    path = (path as NSString).appendingPathExtension("text")!    let pathUrl = URL(fileURLWithPath: path)        do {        //写入        try string.write(toFile: path, atomically: true, encoding: String.Encoding.utf8)        try string.write(to: pathUrl, atomically: true, encoding: String.Encoding.utf8)                // 读取        // 自动解析        try string = String(contentsOfFile: path)        print(string)        // 指定编码解析        try string = String(contentsOfFile: path, encoding: String.Encoding.utf8)        print(string)        // 使用默认的编码解析 如果不能解析 采取默认解析并返回解析编码        var encoding:String.Encoding = String.Encoding.utf16LittleEndian        try string = String(contentsOfFile: path, usedEncoding: &encoding)        print(string)                // URl 读取        try string = String(contentsOf: pathUrl)        print(string)        try string = String(contentsOf: pathUrl, encoding: String.Encoding.utf8)        print(string)        try string = String(contentsOf: pathUrl, usedEncoding: &encoding)        print(string)    } catch {        print("错误:\(error)")    }    /*  print          XuBaoAiChiYu     XuBaoAiChiYu     XuBaoAiChiYu     XuBaoAiChiYu     XuBaoAiChiYu     XuBaoAiChiYu          */}

获取字符串的Swift属性

//获取字符串的Swift属性fileprivate func testGettingProperties() {    let string = String(stringInterpolation: "XuBaoAiChiYu", "QQ", "1045214799")        // String.CharacterView    print("String.CharacterView:\(string.characters)")        // String.UnicodeScalarView    print("String.UnicodeScalarView:\(string.unicodeScalars)")        // String.UTF16View    print("String.UTF16View:\(string.utf16)")        // String.UTF8View    print("String.UTF8View:\(string.utf8)")        // hash值    print("hashValue:\(string.hashValue)")        // 是否为空    print("isEmpty:\(string.isEmpty)")        /*  print          String.CharacterView:CharacterView(_core: Swift._StringCore(_baseAddress: Optional(0x0000000100b06e80), _countAndFlags: 24, _owner: Optional(Swift._HeapBufferStorage
))) String.UnicodeScalarView:XuBaoAiChiYuQQ1045214799 String.UTF16View:XuBaoAiChiYuQQ1045214799 String.UTF8View:XuBaoAiChiYuQQ1045214799 hashValue:-8659559252040524018 isEmpty:false */}

获取字符串长度

//获取字符串长度fileprivate func testGettingLength() {    var string: String = String()    string = "XuBaoAiChiYu: 1045214799"        // 起始位置    var index =  string.startIndex    print(index)        // 结束位置    index = string.endIndex    print(index)        // NSString方式获取长度    var length = (string as NSString).length    print(length)        // swift方式获取    length = string.characters.distance(from: string.startIndex, to: string.endIndex)    print(length)        // 通过编码获取长度    length = string.lengthOfBytes(using: String.Encoding.utf8)    print(length)        /*  print          Index(_base: Swift.String.UnicodeScalarView.Index(_position: 0), _countUTF16: 1)     Index(_base: Swift.String.UnicodeScalarView.Index(_position: 24), _countUTF16: 0)     24     24     24          */}

大小写变化

//大小写变化fileprivate func testChangingCase() {    var string = "XuBaoAiChiYu QQ 1045214799"    print(string)        //大写    string = string.uppercased()    print(string)        //小写    string = string.lowercased()    print(string)        /* print          XuBaoAiChiYu QQ 1045214799     XUBAOAICHIYU QQ 1045214799     xubaoaichiyu qq 1045214799          */    }

字符串转数值

//字符串转数值fileprivate func testGettingNumericValues() {        let string = "24"    print(string)    let nStr = string as NSString // 借用NSString输出    print(nStr)        print("doubleValue:\(nStr.doubleValue)")    print("floatValue:\(nStr.floatValue)")    print("intValue:\(nStr.intValue)")    print("integerValue:\(nStr.integerValue)")    print("longLongValue:\(nStr.longLongValue)")    print("boolValue:\(nStr.boolValue)")        /* print          24     24     doubleValue:24.0     floatValue:24.0     intValue:24     integerValue:24     longLongValue:24     boolValue:true          */}

增加字符串

//增加字符串fileprivate func testCombiningStrings() {        var string = "XuBaoAiChiYu QQ 1045214799"    print(string)        // 添加字符串    string.append("_Swift")    print(string)        string += "_Swift"    print(string)        string.write("_Swift")    print(string)        // string后增加字符串并生成一个新的字符串    string = string + string    print(string)        // string后增加组合字符串并生成一个新的字符串    string = string.appendingFormat("_%@", "OC")    print(string)        // string后增加循环字符串,stringByPaddingToLength:完毕后截取的长度;startingAtIndex:从增加的字符串第几位开始循环增加。    string = string.padding(toLength: 30, withPad:"_Swift", startingAt:3)    print(string)        // 指定位置插入Character    string.insert("5", at: string.characters.index(string.endIndex, offsetBy: -1))    print(string)        // 指定位置插入字符串    string.insert(contentsOf: "78".characters, at: string.characters.index(string.startIndex, offsetBy: 9))    print(string)        /*  print          XuBaoAiChiYu QQ 1045214799     XuBaoAiChiYu QQ 1045214799_Swift     XuBaoAiChiYu QQ 1045214799_Swift_Swift     XuBaoAiChiYu QQ 1045214799_Swift_Swift_Swift     XuBaoAiChiYu QQ 1045214799_Swift_Swift_SwiftXuBaoAiChiYu QQ 1045214799_Swift_Swift_Swift     XuBaoAiChiYu QQ 1045214799_Swift_Swift_SwiftXuBaoAiChiYu QQ 1045214799_Swift_Swift_Swift_OC     XuBaoAiChiYu QQ 1045214799_Swi     XuBaoAiChiYu QQ 1045214799_Sw5i     XuBaoAiCh78iYu QQ 1045214799_Sw5i          */}

分割字符串

//分割字符串fileprivate func testDividingStrings() {    let str = "XuBaoAiChiYu_QQ_1045214799"        //根据指定的字符串分割成数组    var array = str.components(separatedBy: "_")    print(array)        //通过系统自带的分割方式分割字符串    array = str.components(separatedBy: CharacterSet.lowercaseLetters)    print(array)        // 指定位置后的字符串    var tempStr = str.substring(from: str.characters.index(str.startIndex, offsetBy: 3))    print(tempStr)        // 指定位置前的字符串    tempStr = str.substring(to: str.characters.index(str.startIndex, offsetBy: 3))    print(tempStr)        // 指定范围的字符串    let range = str.characters.index(str.endIndex, offsetBy: -6)..

查找字符串

//查找字符串fileprivate func testFindingStrings() {        let str = "XuBaoAiChiYu_QQ_1045214799";    let searchRange = str.startIndex ..< str.characters.index(str.startIndex, offsetBy: 10)    print(searchRange)        //根据NSCharacterSet查找    let cSet = CharacterSet.uppercaseLetters    var range = str.rangeOfCharacter(from: cSet)    print(range!)        //根据字符串查找    range = str.range(of: "Yu")    print(range!)    range = str.range(of: "Yu", options: NSString.CompareOptions.caseInsensitive, range: searchRange, locale: nil)    if let tempRange = range {        print("tempRange:\(tempRange)")    }        //block 行查找    str.enumerateLines { (line, stop) -> () in        print(line)        if "Yu" == line {            stop = true        }    }        //block查找 可设置查找方式 并得到找到的位置    str.enumerateSubstrings(in: searchRange, options: NSString.EnumerationOptions.byComposedCharacterSequences) { (substring, substringRange, enclosingRange, stop) -> () in        print(substring!)        if "A" == substring {            print(substringRange)            stop = true        }    }        /* print          Index(_base: Swift.String.UnicodeScalarView.Index(_position: 0), _countUTF16: 1)..

替换字符串

//替换字符串fileprivate func testReplacingSubstrings() {        var string = "XuBaoAiChiYu_QQ_1045214799"    let replacingRange = string.startIndex..

删除字符串

//删除字符串fileprivate func testRemovingSubstrings() {    var string = "XuBaoAiChiYu_QQ_1045214799"    print(string)    //删除指定位置的字符串    string.remove(at: string.characters.index(string.startIndex, offsetBy: 1))    print(string)        //根据范围删除字符串    let range = string.characters.index(string.endIndex, offsetBy: -6)..

比较字符串

//比较字符串fileprivate func testComparingStrings() {        var string = "XuBaoAiChiYu_QQ_1045214799"    let compareStr = "XuBaoAiChiYu_QQ_1045214799"    let searchRange = string.characters.index(string.startIndex, offsetBy: 5)..

转载于:https://www.cnblogs.com/xubaoaichiyu/p/6482637.html

你可能感兴趣的文章
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>