Swift 学习- 04 -- 字符串和字符

// 字符串 和 字符

// 字符串 是有序的 Character (字符) 类型的值的集合,  通过 String 类型的集合

// swift 的 String 和 Character 类型提供了快速和兼容 Unicode 的方式供你的代码使用, 创建和操作字符串的语法与C语言中的字符串相似, 轻量并且已读

// 字符串连接操作只需要简单地通过 + 符号将两个字符串连接即可

// 与swift 中其他值一样, 能否更改字符串的值, 取决于其被定义为常量还是变量

// 注意:

// swift 的 String 类型与 Foundation NSString 类进行了无缝对接, Foundation 也可以对 String 进行扩展, 暴露在 NSString 中定义的方法 , 这意味着,如果你在 String 中调用这些 NSString 的方法, 将不用进行转换

var ss = "aaaaaaa"

let bb = ss + "bbbbbb"

print(bb)

// 字符串字面量

// 字符串字面量室友双引号 ("")包裹着的具有固定顺序的文本字符集

// 字符串字面量可以为常量或者变量提供初始值

// 初始化空字符串

// 要创建一个空字符串作为初始值, 可以将空的字符串字面量赋值给变量, 也可以初始化一个新的 String 实例

var emptyString = ""    // 空字符串字面量

var antherEmptyString = String() // 初始化方法

// 你可以通过检查其 Bool 类型的 isEmpty 属性来判断改字符串是否为空

if emptyString.isEmpty{

print("Nothing to see here")

}

// 字符串可变性

// 你可以通过讲一个特定字符串分配给一个变量来对其进行修改, 或者分配给一个常量保证其不会被修改

// 注意:

// Objective-C 和 Cocoa 中 , 你需要通过选择两个不同的类 (NSString 和 NSMutableString) 来指定字符串是否可以被修改

// 使用字符

// 你可以通过 for-in 循环来遍历字符串中的 characters 属性来获取每一个字符的值;

for charcater in "Dog!??".characters {

print(charcater)

}

// 另外,通过表明一个 Character 类型并用字符字面量进行复制, 可以建立一个独立的字符常量或变量

let exclamationMark: Character = "!"

// 字符串可以通过传递一个值类型为 Character 的数组作为自变量来初始化

let catCahracter: [Character] = ["C","a","t","!","??"]

let catString = String(catCahracter)

print(catString)

// 连接字符串和字符

// 字符串可以通过加法运算符 (+) 相加在一起(或称连接)创建一个新的字符串

let string1 = "hello"

let string2 = " world"

var welcome = string1 + string2

// 你也可以通过加法赋值运算符 (+=) 将一个字符串添加到一个已经存在的字符串之后

var instryction = "look over"

instryction += string2

// 你也可以用 append() 方法讲一个字符添加到字符串变量的尾部

let exclamationmark: Character = "!"

welcome.append(exclamationMark)

welcome.append(string2)

// 注意:你不能将一个字符串或者字符添加到一个已经存在的字符变量上面,因为字符变量只能包含一个字符

// 字符串插值

// 字符串插值是一种构建新字符串的方式, 可以再其中包含常量.变量,字面量,和表达式

// 你插入的字符串字面量的每一项都在以 反斜杠 为 前缀的 圆括号 内

// 注意:

// 插值字符串中写在括号内的表达式不能包含非转义反斜杠(\), 并且不能包含 回车 或 换行符, 不过插值字符串可以包含其他字面量

// Unicode

// swift 的 string 类型是基于 Unicode 标量建立的

// Unicode 标量是对应字符或者修饰符的唯一的 21 位数字,

// 字符串字面量的特殊字符

// 字符串字面量可以包含以下特殊字符

// 转义字符 : \0 (空字符) , \\ (反斜线) , \n (换行符) , \r (回车符)

// \" (双引号) , \‘ (单引号) , Unicode标量, 写成\u{n} (u 为小写) 其中n为任意一到八位十六进制数且可用的 Unicode 位码

// 可扩展的字形群集

// 每一个Swift 的 Character 类型代表一个可扩展的字形群, 一个可扩展的字形群是一个或多个可生成人类可读的字符 Unicode 标量的有序排列

// 计算字符数量

// 如果想要获得一个字符串中 Character 值的数量, 可以使用字符串的 character 属性的 count 属性

var word = "cafe"

print("the number of characters in \(word) is \(word.characters.count)")

// 打印输出 "the number of characters in cafe is 4"

// 访问和修改字符串

// 你可以通过字符串的属性和方法来访问和修改他, 当然也可以用下标语法完成

// 字符串索引

// 每一个 string 值都有一个关联的索引(index)类型, String.Index, 他对应着字符串中的每一个 character 的位置

// 不同的字符串可能会占用不同数量的内存空间, 所以要知道 character 的确定位置, 就必须从 string 的开头遍历每一个 Unicode 标量直到结尾, 因此,  Swift 的字符串不能用整数(interger)做索引

// 使用 startIndex 属性可以获取一个 string 的第一个 character 的索引, 使用 endIndex 属性可以获取最后一个 character 的后一个位置的索引, 因此 endIndex 不能作为一个字符串的有效下标, 如果 string 是空串, startIndex 和 endIndex 是相等的

// 通过调用 string 的 index(before:) 或 index(after:) 方法, 可以立即得到前面或者后面的一个索引, 您还可以通过调用 index(_:offsetBy:) 方法来获取对应偏移量的索引, 这种方法可以避免多次调用 index(before:) 或者 index(after:) 方法

let greenting = "Guten Tag!"

print(greenting[greenting.startIndex])

greenting[greenting.index(before: greenting.endIndex)]

greenting[greenting.index(after: greenting.startIndex)]

let index = greenting.index(greenting.startIndex, offsetBy: 7)

greenting[index]

// 使用 character 属性的 indices 属性会创建一个包好全部索引的范围(Range), 用来在一个字符串中访问单个字符

for index in greenting.characters.indices {

print("\(greenting[index])")

}

// 注意 : 你可以使用startIndex 和 endIndex 属性或者(index:before), index(after:) 和index:(_:offsetBy:) 方法在任意七个确定并遵循 collection 协议的类型里面, 如上文所示是使用在 String 中, 您也可以使用在 array, dictionary 和 set 中

// 插入和删除

// 调用 insert(_:at:) 方法可以在一个字符串的指定索引插入一个字符, 调用 insert(contentsOf:at:) 方法可以在一个字符串的指定索引插入一个段字符串

var  welcomeStr = "hello"

welcomeStr.insert("!", at: welcomeStr.endIndex)

welcomeStr.insert(contentsOf: " there".characters, at: welcomeStr.index(before: welcomeStr.endIndex))

// 调用 remove(at:) 方法可以在一个字符串的指定索引删除一个字符,

// 调用 removeSubrange(_:) 方法可以在一个字符串的指定索引删除一个子字符串

welcomeStr.remove(at: welcomeStr.index(before: welcomeStr.endIndex))

let renge = welcomeStr.index(welcomeStr.endIndex, offsetBy: -6)..<welcomeStr.endIndex

welcomeStr.removeSubrange(renge)

// 注意 : 你可以使用 insert(_:at:) , insert(contentsOf:at:) , remove(at:) 和 removeSubrange(_:) 方法在任意一个遵循的并确认的 RangeReplaceableCollection 协议的类型里面 , 如上文所示是使用在 string 中, 您也可以使用在 Array , dictionary 和 set 之中

// 比较字符串

// swift 提供了三种方式来比较文本值, 字符串字符相等, 前缀相等 和 后缀相等

// 字符串/字符相等

// 字符串/字符可以使用等于操作符(==), 和不等于操作符(!=)

let quotation = "we‘re a lot alike, you and I."

let sameQuotation = "we‘re a lot alike, you and I."

if quotation == sameQuotation {

print("There two strings are considered equal")

}

// 前缀/后缀相等

// 通过调用字符串的 hasPrefix(_:) / hasSuffix(_:) 方法来检查字符串是否拥有特定前缀/后缀, 两个方法均接受一个 String 类型的参数, 并返回一个布尔值

// 字符串的 Unicode 表示形式

// 当一个 Unicode 字符串被写进文本文件或者其他存储是, 字符串中的 Unicode 标量会用 Unicode 定义的几种 编码格式 (encodeing forms) 编码, 每一个字符串中的小块编码被称为 代码单元 (code units) , 这些包括UTF-8编码合适(编码字符串为8位的代码单元), UTF-16, UTF-32

// swift 提供了几种不同的方式来访问字符串的 Unicode 表示形式

// 你可以利用 for-in 来对字符串进行遍历, 从而以 Unicode 可扩展的字符群集的方式访问每一个 cahracer 值

// UTF-8 表示

// 你可以通过 String 的 UTF-8 属性来访问他的 UTF-8 表示

时间: 2024-10-12 00:51:41

Swift 学习- 04 -- 字符串和字符的相关文章

Swift学习笔记-字符串和字符(Strings and Characters)-比较字符串 (Comparing Strings)

Swift 提供了三种方式来比较文本值:字符串字符相等.前缀相等和后缀相等. 字符串/字符相等 (String and Character Equality) 字符串/字符可以用等于操作符(==)和不等于操作符(!=),详细描述在比较运算符: let quotation = "We're a lot alike, you and I." let sameQuotation = "We're a lot alike, you and I." if quotation

Swift学习笔记-字符串和字符(Strings and Characters)-Unicode

Unicode Unicode 是一个国际标准,用于文本的编码和表示. 它使您可以用标准格式表示来自任意语言几乎所有的字符,并能够对文本文件或网页这样的外部资源中的字符进行读写操作. Swift 的String和Character类型是完全兼容 Unicode 标准的. Unicode 标量(Unicode Scalars) Swift 的String类型是基于 Unicode 标量 建立的. Unicode 标量是对应字符或者修饰符的唯一的21位数字,例如U+0061表示小写的拉丁字母(LAT

Swift学习笔记-字符串和字符(Strings and Characters)-字符串的 Unicode 表示形式(Unicode Representations of Strings)

当一个 Unicode 字符串被写进文本文件或者其他储存时,字符串中的 Unicode 标量会用 Unicode 定义的几种编码格式编码.每一个字符串中的小块编码都被称为代码单元.这些包括 UTF-8 编码格式(编码字符串为8位的代码单元), UTF-16 编码格式(编码字符串位16位的代码单元),以及 UTF-32 编码格式(编码字符串32位的代码单元). Swift 提供了几种不同的方式来访问字符串的 Unicode 表示形式. 您可以利用for-in来对字符串进行遍历,从而以 Unicod

Swift学习笔记-教程学习二字符串和字符(Strings and Characters)

按照swift教程的内容,把自己觉得重要的记录了下来.——新波 2.1字符串字面量String Literals 字符串字面量是由双引号 ( "" ) 包裹着的具有固定顺序的文本字符集. let someString = "Some string literal value" 2.2初始化空字符串 Initializing an Empty String var emptyString = ""               // 空字符串字面量

Swift入门篇-字符串和字符

今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本类型不是清楚,请查阅. Swift入门篇-基本类型(1) Swift入门篇-基本类型(2) Swift入门篇-基本类型(3) 一:创建空字符串 //-------------定义一个空字符串第一种方法 var str1="" //-------------定义一个空字符串第二种方法 var

IOS开发语言Swift入门连载---字符串和字符

字符串和字符 String是例如"hello, world","海贼王" 这样的有序的Character (字符)类型的值的集合,通过String 类型来表示. Swift的String 和Character 类型提供了一个快速的,兼容 Unicode 的方式来处理代码中的文本信息. 创建和操作字符串的语法与 C 语言中字符串操作相似,轻量并且易读. 字符串连接操作只需要简单地通过+号将两个字符串相连即可. 与 Swift 中其他值一样,能否更改字符串的值,取决于其

【swift总结】字符串和字符

声明字符串 var str = "Hello, playground" //声明一个字符串 var emptyStr = ""; //声明一个空的字符串 var emptyStr1 = String(); //相等于上面的那个 str.isEmpty; //判断str是不是为空false emptyStr.isEmpty; //true 字符串连接 var str1 = "hello"; var str2 = "world";

Swift 字符串和字符

swift中的字符串和字符都兼容unicode 定义一个字符串 let  hello="hello world" 初始化一个空的字符串 let hello="" let hello=String() 判断一个字符串是否为空 if hello.isEmpty{ println("这是个空字符串") } 字符串可以使用+进行连接 字符串是由单个字符组成 for 单个字符 in hello{ println(单个字符) } 单独定义一个字符 var 单

Swift学习 --- 2.3字符串和字符

1.创建一个空的字符串,并用字符串是否为空进行判断 <span style="font-size:18px;"> var str = "" var str2 = String() if str2.isEmpty { println("empty") } </span> 2.字符 Character 可以通过字符来计算字符串数量 for character in "Dog!Swift学习 --- 2.3字符串和字符