Swift学习笔记之字符串(总结)
字符串面量字符串字面量是由双引号 (“”) 包裹着的具有固定顺序的文本字符集。 字符串字面量可以用于为常量和变量提供初始值: var emptyString = "" //空字符串面量 var anotherEmptyString = String()//初始化方法 //两个字符串均为空并等价 也可以通过Boolean类型的isEmpty属性判断字符串是否为空 if emptyString.isEmpty { print("--------") } 字符串可变性可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改: var v = "a" v += "b" //可变的 let l = "a" l += "b" //常量的不可变编译错误
可以在for-in循环来遍历字符串中的characters属性来获取每一个字符的值: for charter in "Hello".characters { print(character) } 通过标明一个character类型并用字符字面量进行赋值,可以建立一个独立的字符常量或变量: let exclamationMark: Character = "!" 字符串通过传一个值类型Character的数组作为自变量来初始化: let catCharacter: [Character] = ["H","e","l","o"] let catString = String(catCharacters) print(catString) 连接字符串字符串通过加法运算符( let string1 = "hello" let string2 = "you" var welcome = string1 + string2 //值为hello you 也可以通过加法赋值运算符( var string = "hai" string += string2 //值为hai you 也可以用 let exclamationMark: Character = "!" welcome.append(exclamationMark) //值为 hello you !
字符串插值插入字符串面量的每一项都在以反斜线为前缀的圆括号中: let a = 3 let b = "(a) times 2.5 is (Double(a) * 2.5)" // b 是 "3 times 2.5 is 7.5"
字符串索引每一个字符串都有一个关联的索引(index)类型,String.index,它对应着字符串中的每一个字符的位置。 前面提到,不同的字符可能会占用不同的内存空间数量,所以要知道字符的确定位置,就必须从字符串开头遍历每一个 Unicode 标量到字符串结尾。因此,Swift 的字符串不能用整数(integer)做索引。 使用startIndex属性可以获取字符串的第一个字符。使用endIndex属性可以获取最后的位置(其实endIndex在值上与字符串的长度相等)。如果字符串是空值,startIndex和endIndex是相等的 let a = "hello Mr.solo" println(a.startIndex) //0 println(a.endIndex) //13 也可以通过下表来获得string对应位置的Character: a[a.startIndex] //h 通过调用String.Index的predecessor()方法,可以立即得到前面一个索引,调用successor()方法可以立即得到后面一个索引。任何一个字符串的索引都可以通过锁链作用的这些方法来获取另一个索引,也可以调用advance(start:n:)函数来获取。但如果尝试获取出界的字符串索引,就会抛出一个运行时错误。 你可以使用下标语法来访问字符在字符串的确切索引。尝试获取出界的字符串索引,仍然抛出一个运行时错误。 let a = "hello Mr.solo" a[a.startIndex] //h a[a.endIndex.predecessor()] //o a[a.startIndex.successor()] //e let index = advance(a.startIndex,11) a[index] //l a[a.endIndex] //错误 a.endIndex.successor() //错误 使用全局函数indices会创建一个包含全部索引的范围(Range),用来在一个字符串中访问分立的字符串。 for index in a.characters.indices { print("(a[index])",appendNewline: false) } //print "h e l l o M r . s o l o" 插入的删除调用 var a = "hello" a.insert("!",atIndex: Welcome.endIndex) 调用 a.splice(" there".characters,atIndex: a.endIndex.predecessor()) // a 现在等于 "hello there!" 调用 a.removeAtIndex(a.endIndex.predecessor()) // a 现在等于 "hello there" 调用 let range = advance(a.endIndex,-6)..<a.endIndex a.removeRange(range) // a 现在等于 "hello" 比较字符串Swift 提供了三种方式来比较文本值:字符串字符相等、前缀相等和后缀相等。 字符串/字符可以用等于操作符(==)和不等于操作符(!=),详细描述在比较运算符:let a = "hello" let b = "hello" if a == b { print("yes") } 前缀/后缀相等通过调用字符串的hasPrefix(:)/hasSuffix(:)方法来检查字符串是否拥有特定前缀/后缀,两个方法均需要以字符串作为参数传入并传出Boolean值。 if a.hasPrefix("ab"){ print("以ab开头") } if a.hasSuffix("fg"){ print("以fg结尾") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |