Swift学习笔记- 3. 字符串和字符

初始化空字符串

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

var emptyString = ""
var anotherEmptyString = String()
//两个字符串均为空,并相等

可以通过检查其 Boolean 类型的 isEmpty 属性来判断该字符串是否为空:

if emptyString.isEmpty {
    println("什么都没有")
}

字符串可变性

将一个特定字符串分配给一个变量来对其进行修改,或分配给一个常量来保证不会被修改:

var variableString = "Horse"
variableString += "and carriage"

let constantString = "Highlander"
constantString += "and another Highlander"  //编译报错

注意:

在 Swift 中,字符串是否可以修改仅通过定义的是变量还是常量来决定,实现了多种类型可变性操作的统一。

字符串是值类型

String 类型是值类型,一个字符串,在当其进行常量,变量赋值操作或在函数、方法中传递时,会进行值拷贝。任何情况下,都会对已有字符串创建新副本,并对新副本进行传递或赋值操作。

使用字符

String 类型表示特定序列的 Character 类型值的集合,你可以用 for in 来遍历字符串中的每一个字符。

for character in "Dog!" {
    println(character)
}

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

let yenSign: Character = "¥"

计算字符数量

通过条用全局 countElements 函数,可以获取字符串的字符数量

let unusualMenagerie = "Koala ,Snail, Penguin, Dromedary"
println("unusualMenagerie has \(countElements(unusualMenagerie)) characters)")

连接字符串

可以通过 “+” 来连接两个字符串

let string1 = "hello"
let string2 = " there"

var welcome = string1 + string2

你可以用“+=”在一个字符串变量后追加字符串

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

可以通过 String 的 append 方法在一个 String 变量后追加 Character 变量

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

注意:

你不能在一个 Character 变量后追加 String 或 Character,因为 Character 只能包含一个字符

字符串插值

字符串插值是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。插入的字符串字面量的每一项都被包裹在“ \( )”中

let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"

注意:

插值字符串中写在括号中的表达式不能包含非转义双引号(”)和反斜杠(\),并且不能包含回车或换行符.

比较字符串

三种比较字符串的方式:字符串相等, 前缀相等, 后缀相等

字符串相等

如果两个字符串以同一顺序包含完全相同的字符,则认为两者字符串相等

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")
}

前后缀相等

通过调用 String 的 hasPrefix / hasSuffix 方法来检查字符串是否拥有特定的前缀或后缀。

let remeoAndJuliet = [
    "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"
]

var act1SceneCount = 0
for scene in remeoAndJuliet {
    if scene.hasPrefix("Act 1") {
        ++act1SceneCount;
    }
}
println("There are \(act1SceneCount) scenes in Act 1")

var mansionCount = 0
var cellCount = 0
for scene in remeoAndJuliet {
    if scene.hasSuffix("Capulet‘s mansion") {
        ++mansionCount
    } else if scene.hasSuffix("Friar Lawrence‘s cell") {
        ++cellCount
    }
}

println("\(mansionCount) mansion scenes; \(cellCount) cell scenes")

大写和小写字符串

可以通过字符串的 uppercaseString 和 lowercaseString 属性来访问大写\ 小写版本的字符串

let normal = "Could you help me, please?"
let shouty = normal.uppercaseString
let whispered = normal.lowercaseString

时间: 2024-12-18 11:36:02

Swift学习笔记- 3. 字符串和字符的相关文章

Swift学习笔记(4)--字符串及基本使用

String是例如"hello, world","海贼王" 这样的有序的Character(字符)类型的值的集合,通过String类型来表示. Swift 的String类型与 Foundation NSString类进行了无缝桥接.如果您利用 Cocoa 或 Cocoa Touch 中的 Foundation 框架进行工作.所有NSString API 都可以调用您创建的任意String类型的值.除此之外,还可以使用本章介绍的String特性.您也可以在任意要求传

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字符串和字符

SWIFT学习笔记04

1.在实际编译时,Swift 编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着您将字符串作为值类型的同时可以获得极高的性能. 2.for character in "Dog!" { println(character) } // D // o // g // ! 3.通过标明一个Character类型注解并通过字符字面量进行赋值,可以建立一个独立的字符常量或变量: let yenSign: Character = "¥" 4.计算字符数量 l

Swift学习笔记

Apple 新推的Swift已经好几天了.对于向我这样的oc都还没完全琢磨透彻的菜鸟来说--(简直就是福利啊,joke) 看了几天的Swift,只是有了基本的印象.总感觉比较换混乱,可能源自与自己没怎么学过脚本语言.索性,边看边记,加深印象. 本来部分内容源自Apple的<The Swift Programming Language>以及互联网教程.其余内容均为个人理解,不保证正确. 进入正题: 1.Swift是什么? Apple唤他作:雨燕.其实英语过了四级的都应该看出来,Swift还有一层

Swift学习笔记(一):基础

一.常量 & 变量 //常量 let constantsTeam = 1 //变量 var variablesTeam = 2 尽可能使用常量,这样更清晰并且内存更不容易肾亏. 二.显示/隐式指定类型 //隐式 let inferredTeam = 3 //显式 let explicitTeam:Int = 4 三.字符串输出 //通过\(变量或常量名)来引用组合字符串 println("\(inferredTeam) is bigger than \(variablesTeam)!&q

3. 蛤蟆Python脚本学习笔记三字符串

3. 蛤蟆Python脚本学习笔记三字符串 本篇名言:"平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花!幸福不是靠别人来布施,而是要自己去赢取!生命的意义在不断挑战自己,战胜自己!" 这个本来放在昨天的,由于昨晚又太晚了,所以就搁在这里了.赶紧看看吧. 字符串两边都用双引号或者单引号包起来.否则就使用转移符号来转移一下. 输入在一起可以直接拼接. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48112507

Swift学习笔记(11)--类与结构体

类与结构是编程人员在代码中会经常用到的代码块.在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能. 和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文件来使用类或者结构.Swift中的类或者结构可以在单文件中直接定义,一旦定义完成后,就能够被直接其它代码使用. 注意:一个类的实例一般被视作一个对象,但是在Swift中,类与结构更像是一个函数方法,在后续的章节中更多地是讲述类和结构的功能性. 1.类和结构的异同 类和结构有一些相似的地方,它们都可以

Swift学习笔记(12)--数组和字典的复制

Swift中,数组Array和字典Dictionary是用结构来实现的,但是数组与字典和其它结构在进行赋值或者作为参数传递给函数的时候有一些不同. 并且数组和字典的这些操作,又与Foundation中的NSArray和NSDictionary不同,它们是用类来实现的. 注意:下面的小节将会介绍数组,字典,字符串等的复制操作.这些复制操作看起来都已经发生,但是Swift只会在确实需要复制的时候才会完整复制,从而达到最优的性能. 字典的赋值和复制操作 每次将一个字典Dictionary类型赋值给一个

Perl语言学习笔记 14 字符串与排序

1.字符串内用index搜索 $where = index($words,$word); ##从words里找到首次出现word的位置,下标从0开始,查找失败则返回-1: 指定开始搜索的地方:$where = index($words,$word,10); ##从10开始往后寻找,包含10 搜索子串最后出现的位置: 限定返回的最大位置:$where = rindex($words,$word,10); ##只搜索下标为10以前的字符. 2.处理子串 substr参数:依次为:字符串.起始下标.要