在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Working with Characters (与字符相关) 在Swift中,String类型表示一组有序字符的值.每个字符都是一个Unicode符号.可以使用for-in循环来遍历字符串中的每个字符: for character in "Dog!????" { println(character) } // D // o // g // ! // ???? 在Swift中也可以使用Character类型来显式的创建一个单字符的常量或者变量: let yenSign: Character = "¥" Counting Characters (计算字符个数) 调用全局函数countElements,传递一个字符串作为它的参数,可以计算出这个字符串中字符的数量: let unusualMenagerie = "Koala ????, Snail ????, Penguin ????, Dromedary ????" println("unusualMenagerie has \(countElements(unusualMenagerie)) characters") // prints "unusualMenagerie has 40 characters” 注意点: 不同的Unicode字符,以及相同Unicode字符不同的表示,他们需要的内存存储空间是不同的.因此字符与表示这个字符的字符串有时候的存储空间也是不同的.这样以来,一个字符串的 长度就必须依据通过遍历它的每个字符来计算获得.如果你要处理一个特别长的字符串,请注意,为了准确的计算出字符串的长高度,一定要确保countElements函数遍历了每个字符. countElements函数返回的字符数与NSString的length属性表示的字符数会有不一致的时候.NSString的length是根据UTF-16格式编码的字符串中16位单元码个数来计算的,而不是 依据字符串中Unicode字符个数来计算的.根据这种情况,NSString的length属性在Swift中被视为 utf16count. Concatenating Strings and Characters (链接字符串和字符) 字符串和字符的值可以通过加号(+)链接后建立一个新的字符串: let string1 = "hello" let string2 = " there" let character1: Character = "!" let character2: Character = "?"
let stringPlusCharacter = string1 + character1 // equals "hello!" let stringPlusString = string1 + string2 // equals "hello there" let characterPlusString = character1 + string1 // equals "!hello" let characterPlusCharacter = character1 + character2 // equals "!?” 也可以使用复合加法操作符(+=)来给一个已经定义的字符串再追加一个字符串或字符. var instruction = "look over" instruction += string2 // instruction now equals "look over there"
var welcome = "good morning" welcome += character1 // welcome now equals "good morning!” 注意点: 不能给一个字符变量追加一个字符串或者字符,因为一个字符类型的值只能存储一个字符. String Interpolation (字符串拼接插入操作) 字符串的拼接插入操作是构建新的字符串的一种方式,通过混合组织常量,变量,文本以及表达式的值在这个字符串文本中.插入到字符串文本中的每个条目都用括号()包住,并在前面写 上饭斜杠(\): let multiplier = 3 let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)" // message is "3 times 2.5 is 7.5” 在上面的例子中,multiplier 的值通过\(multiplier)方式插入到字符串文本中.当执行字符串插入运算的时候,\(multiplier)的位置会被multiplier的实际值取代,从而创建一个明确的字符 串. 字符串末端的multiplier的值是长表达式的一部分.表达式计算出 Double(multiplier) * 2.5的值,然后将计算结果值 (7.5)插入到字符串中.在例子中,是使用 \(Double(multiplier) * 2.5)方式将值包含到字符串中. 注意点: 写字括号()里面的表达式不能包含双引号”或者反斜杠\,也不能包含回车或者换行符. Comparing Strings (字符串比较) 在Swift中提供了三种方式比较字符串:字符串相等,前缀相等,和后缀相等 String Equality (字符串相等) 如果两个字符串包含的相同次序的字符,那么这两个字符串相等: let quotation = "We're a lot alike, you and I." let sameQuotation = "We're a lot alike, you and I." if quotation == sameQuotation { println("These two strings are considered equal") } // prints "These two strings are considered equal” Prefix and Suffix Equality (前缀和后缀相等) 调用字符串的 hasPrefix 和 hasSuffix方法,可以检查一个字符串中是否有指定的前缀或后缀字符串.这两个方法都只带一个String类型的参数,并返回一个布尔类型的值.这个方法都会 进行逐字符的进行比较. 下面的代码例子中,字符串数组表示了Shakespeare’s Romeo and Juliet(莎士比亚的罗密欧与 朱丽叶)前两章情景: let romeoAndJuliet = [ "Act 1 Scene 1: Verona, A public place", "Act 1 Scene 2: Capulet's mansion", "Act 1 Scene 3: A room in Capulet's mansion", "Act 1 Scene 4: A street outside Capulet's mansion", "Act 1 Scene 5: The Great Hall in Capulet's mansion", "Act 2 Scene 1: Outside Capulet's mansion", "Act 2 Scene 2: Capulet's orchard", "Act 2 Scene 3: Outside Friar Lawrence's cell", "Act 2 Scene 4: A street in Verona", "Act 2 Scene 5: Capulet's mansion", "Act 2 Scene 6: Friar Lawrence's cell" ] 你可以使用 hasPrefix方法来计算这个戏剧章节1中场景的数量: var act1SceneCount = 0 for scene in romeoAndJuliet { if scene.hasPrefix("Act 1 ") { ++act1SceneCount } } println("There are \(act1SceneCount) scenes in Act 1") // prints "There are 5 scenes in Act 1” 同样的,你也可以使用Capulet’s mansion 和 Friar Lawrence’s cell作为参数,通过hasSuffix方法来计算场景数: var mansionCount = 0 var cellCount = 0 for scene in romeoAndJuliet { if scene.hasSuffix("Capulet's mansion") { ++mansionCount } else if scene.hasSuffix("Friar Lawrence's cell") { ++cellCount } } println("\(mansionCount) mansion scenes; \(cellCount) cell scenes") // prints "6 mansion scenes; 2 cell scenes” Uppercase and Lowercase Strings (字符串的大小写转换) 通过uppercaseString 和lowercaseString属性,可以进行大写或者小写的存储访问: let normal = "Could you help me, please?" let shouty = normal.uppercaseString // shouty is equal to "COULD YOU HELP ME, PLEASE?" let whispered = normal.lowercaseString // whispered is equal to "could you help me, please?”
|
请发表评论