swift学习笔记----Strings and Characters

原创 2016年08月29日 21:55:34
初始化一个空的String
  初始化一个空的字符串有两种方式:
   1.var emptyString = ""
  2.var anotherEmptyString = String()
 上面这两种方式完全相同,我们可以通过字符串的isEmpty属性来判断是否为空

String的可变性
  这完全取决于变量是let还是var

字符串是值类型
  字符串的深复制还是浅复制取决于编译器,有一条原则是程序员不用担心自己传入一个方法或者一个变量的字符串,被偷偷的改变。

字符的一些用法
 1. for character in "Dog!?".characters {
    print(character)
  }
 2.let(或者var) exclamationMark: Character = "!" 可以设置一个单独的Character类型
 3.Character数组可以初始化String
  
   let catCharacters: [Character] = ["C", "a", "t", "!", "?"]
   let catString = String(catCharacters)
   print(catString)


 字符串和字符的一些运算
   let string1 = "hello"
   let string2 = " there"
   var welcome = string1 + string2
  // welcome now equals "hello there"

   var instruction = "look over"
   instruction += string2
// instruction now equals "look over there"

   let exclamationMark: Character = "!"
   welcome.append(exclamationMark)
// welcome now equals "hello there!"

插值字符串
  我们可以通过/()的方式把其他变量变为字符串如:
  let multiplier = 3
  let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
// message is "3 times 2.5 is 7.5"
  我们还要注意/()里不能包含回车,换行,和\;

字符串里的特殊字符
   1.\0 (空字符), \\ (反斜杠), \t (horizontal tab), \n (换行), \r (回车), \" (double quote) and \' (single quote)
   2.\u{n}其中n为长1-8位的16进制数,代表一个unicode的字符串

扩展字元簇(Extended Grapheme CGrapheme是指某种lusters)
自然语言中的最小单元,它并不一定有实际意义,但是它们组合成这种语言的单个字符。Swift语言的每个字符(Character)都是一个独立的扩展字元 簇,一个扩展字元簇就是由一个或多个Unicode scalar(Unicode纯量)的有序排列从而组合成可读的字符。
比如:字母é可以是一个单独的Unicode scalar:U+00E9,也可以是多个纯量的组合:U+0065U+0301 (其中U+0065就是字母e)。在Swift中,这两种情况都认为是一个字符,因此获取字符串长度的时候(用全局函数count()),返回的值是相同的,这意味着字符串的改变并不一定意味着其长度发生变化。
注意区分这和OC中NSString的length的区别,NSString的长度是基于字符串在UTF-16编码表示时其中包含的16位的单元的个数,而不是Unicode扩展字元簇的数目。为了反映这个区别,NSString的length属性在Swift中用utf16Count函数来代替。

字符串中字符的数量:
  我们可以通过字符串的characters属性的count属性获取字符数量。如:
  let unusualMenagerie = "Koala ?, Snail ?, Penguin ?, Dromedary ?"
  print("unusualMenagerie has \(unusualMenagerie.characters.count) characters")
// Prints "unusualMenagerie has 40 characters"
  但我们要注意的是我们给字符串加上Unicode纯量的时候,字符串的数量不一定会改变(字符串的长度并不取决于Unicode纯量所占内存单元的数量,而是Character数量):
  var word = "cafe"
 
 print("the number of characters in \(word) is \(word.characters.count)")
// Prints "the number of characters in cafe is 4"
 
 word += "\u{301}"    // COMBINING ACUTE ACCENT, U+0301
 
 print("the number of characters in \(word) is \(word.characters.count)")
// Prints "the number of characters in cafe? is 4"


字符串API
 1.可以通过下标获取字符串中的字符
   需要我们注意的是下标不能是数字,我们只能通过String的startIndex和endIndex来进入字符串,获取字符,通过index(before:)、 index(after:)或
   index (_:offsetBy:)来遍历字符
  

  let greeting = "Guten Tag!"
  greeting[greeting.startIndex]
  // G
  greeting[greeting.index(before: greeting.endIndex)]
  // !
  greeting[greeting.index(after: greeting.startIndex)]
  // u
  let index = greeting.index(greeting.startIndex, offsetBy: 7)
  greeting[index]
  // a

   //注意下面的方法
    for index in greeting.characters.indices {
    print("\(greeting[index]) ", terminator: "")
  }

2.插入和移动
  插入字符 insert(_:at:)
  插入字符串 insert(contentsOf:at:)

  var welcome = "hello"
  welcome.insert("!", at: welcome.endIndex)
  // welcome now equals "hello!"
 
  welcome.insert(contentsOf:" there".characters, at: welcome.index(before: welcome.endIndex))
  // welcome now equals "hello there!"

 
  移动一个字符 remove(at:)
  移动一个字符串 removeSubrange(_:)

  welcome.remove(at: welcome.index(before: welcome.endIndex))
  // welcome now equals "hello there"
 
  let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
  welcome.removeSubrange(range)
  // welcome now equals "hello"

3.字符串比较
  1)字符和字符串的比较,这完全取决于拓展字符是否相同
  2)hasPrefix(_:) and hasSuffix(_:) 判断是否有某个字符串
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Swift学习之十:字符串与字符(Strings and Characters)

字符串是有序的字符集,如"hello, world" 或者 "albaatross".在Swift中字符串类型是String,由有序的Character组合而成。 Swift中的String与Cha...

Swift学习之十:字符串与字符(Strings and Characters)

Swift学习之十:字符串与字符(Strings and Characters)

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 05 Strings and Characters

import Foundation //***********************************************************************...

Swift 字符串和字符(Strings and Characters)

String是例如"hello, world","albatross"这样的有序的Character(字符)类型的值的集合,通过String类型来表示。 Swift 的String和Character...

Swift语言官方文档翻译(5)-Strings and Characters

Strings and Characters

Strings And Characters Of Swift 2.1

原文出自:标哥的技术博客 前言字符串是一系列的字符的集合。在Swift中,使用String类型表示字符串类型,而使用Character表示字符类型。Swift的String类型与Foundation中...

Objective-C 2.0 学习笔记十一(Number, Strings, and Collections)

变更履历 版本:v1.0 介绍 本节记录了Foundation框架提供的一些基本对象。这些基本对象包括数字、字符串和集合。集合指的是数组(arrays)、字典(dictionaries)和集(s...

iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Type

值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常定义为struct...

swift 学习笔记 UITableView (一)Table View Styles and Accessory Views

Table View Styles 和 附属的views Table View有各种不同的Style去match不同的porpose, 而且, UIKit framework提供了标准的St...

JHTP小结_第十四章_字符串、字符及正则表达式(Strings, Characters and Regular Expressions)

复习到第14章了,虽然比较慢,但是比较踏实。 字符串操作在实际应用中很常见,必须熟练掌握 Summary Section 14.2Fundamentals of Characters a...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)