swift笔记 (三) —— 字符和字符串

字符串和字符

苹果要是不提供了unicode的字符串和字符,那就是他们公司全部人的脑袋都被门夹过

他自己家都要发非常多国家的版本号的软件,怎么可能不用unicode呢

此处略去30字...

这里能够拿出来说的。也就是 Swift的 String支持全部的NSString的api

String中能够包括一些特殊字符:

\0 (空字符)  \\ (反斜线)  \t (tab) \n (换行符)  \r (回车符)  \” (双引號)  \’ (单引號)

还能够包括:

单字节 unicode 字符 \xnn               // \x后面跟着两个十六进制数

双字节 unicode 字符 \unnnn           // \u后面跟着四个十六进制数

四字节 unicode 字符 \Unnnnnnnn  // \U(这个是大写)后面跟着八个十六进制数

官方的样例:

let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"

// "Imagination is more important than knowledge" - Einstein

let dollarSign = "\x24"        // $,  Unicode scalar U+0024

let blackHeart = "\u2665"      // ?,  Unicode scalar U+2665

let sparklingHeart = "\U0001F496"   //这个凝视在blog上显示不了,以至于后面的都被截断了。

。。

空字符串

var emptyString = “”

var anotherEmptyString = String()

if emptyString.isEmpty {…}  //isEmpty 方法可用,返回Bool值

至于

var myString = “hello”

myString += “ world”

let myString = “hello”

myString += “ world”

就不须要重复的提了吧。另外一种let 不可行,由于他是常量

字符串作为參数的传递

值得注意的是,字符串是传值的,而在Objective-C中。是传引用的

尽管官方说在编译选项里能够把这个优化掉,仅仅有在须要改变字符串内容的时候才会传值,从而获得非常高效的传參

(算了,后面看看还有没有什么能够规避这个问题的方法吧,尽量少传字符串为妙。除非不得已)

字符

for character in “Hello World” {

pintln (character)

}

let myChar: Character = “$”

不解释了

字符个数

Swift提供了一个全局函数 countElements 能够用于干这事儿:

let myLongString = “Hello Kitty~ Hello World~ I Love Shanghai~ I Love China~ “

println(“myLongString has \(countElement(myLongString) characters”)   //57个...

值得注意的是:

countElement() 是把字符一个一个数过去的,所以处理长字符串的时候。须要我们关心效率问题

这与NSString不同,NSString是按着UTF-16存储字符串的,也是按着UTF-16去算字符数的

而Swift存的是unicode,它并不能像UTF-16那样数,由于它也不知道每一个字符占了多大空间

所以,countElement() 和 NSString 返回的字符数,有可能是不同的

当然,假设把Swift的String 传给了NSString的函数的话,这里就要注意了,是要按着NSString的方式数

也就是utf16count。而不是countElement()的返回数量

字符串包括

hasPrefix 和 hasSuffix 两个String的方法都是遍例字符串的:

let myString1 = “中华人民共和国”

let myString2 = “我是中国人”

myString1.hasPrefix(“我”)  // false

myString2.hasPrefix(“我”)  // true

myString1.hasSuffix(“人民”) // true

myString2.hasSuffix(“人民”) // false

字符串大写和小写转换

uppercaseString 和 lowercaseString

let myString = “Hellow World”

println(myString.uppercaseString)   //HELLOW WORLD

println(myString.lowercaseString)    //hellow world

字符编码

Swift的字符串是unicode的。 unicode能够表示世界上不论什么一种语言的不论什么字符

须要转换的时候。也能够使用String提供的方法

let myString = “abc”

myString.utf8                      //UTF-8 编码

myString.uft16                    //UTF-16 编码

myString.unicodeScalars   //21位 unicode

关于编码的知识。我就不写在这里了,须要了解的话

请參考《The Swift Programming Language》第92-96页 (发现这个页码在不同设备上不一样,我是在iMac上看的)

时间: 2024-08-09 14:41:13

swift笔记 (三) —— 字符和字符串的相关文章

【Swift】学习笔记(三)——字符和字符串

基本了解了变量的创建和基础数据类型,但是在开发中用得最多的还是字符串.那什么是字符串呢? Swift 的String类型表示特定序列的Character(字符) 类型值的集合,它是值类型具有可变性 Swift 的字符串和字符类型是全然兼容 Unicode 标准的 1.定义一个String类型变量 let stringTest = "String test" //定义一个stringTest String类型变量 其值为String test let stringTest: String

swift笔记三 使用xcode

建一个xcode工程..OS X > Application > Command Line Tool因为我们只是想玩玩swift语言特性不做UI. product name; example org name: cyper  org id: me.cyper bundle id: me.cyper.example 保存在桌面.   example > example.xcodeproj example > example/main.swift 选择products>examp

非计算机专业的码农C#学习笔记 三、变量 表达式 字符串

三.变量常量 说在前: 其实,写这个东西的时候,我也是在复习,因为这个都是一年前的笔记了.今天我看了几章,贴上来吧.我也是求高手指点,因为变量类型很多,我真的背不出来,只有用的时候记起来或者查查资料. 为什么会这样呢?短期项目用到access,sqlserver,oracle后我开始张冠李戴了.....所以,我在学习过程,真的是抄下来,放在办公室座位前.... 变量(int Int=0) 1.值类型 (1)整型 类型 说明(二进制) 范围 Sbyte 8位有符号 -128-127 Byte 8位

Swift入门(二)——字符与字符串

Swift字符 定义 Swift中的字符,与OC有些不同,每一个字符代表了一个可拓展的字母集,可拓展的字母集由若干个(大于等于一个)Unicode标量值表示,这些标量构成了一个可拓展的字母集,也就是一个人类可读的字符. Unicode标量 一个Unicode标量占据21个比特位,一般格式为"U+xxxx",这个解释有点抽象,其实我们通常理解的一个字母,也可以用一个Unicode标量来表示,比如字母'a'可以表示为"U+0061". 刚刚说到,一个字符由若干个Unic

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

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

python之转移字符(学习笔记三)

python之转移字符(学习笔记三) 转义字符 \ 可以转义很多字符,比如 \n 表示换行, \t 表示制表符,字符 \ 本身也要转义,所以 \\ 表示的字符就是 \ ,可以在Python的交互式命令行用print打印字符串看看: 命令: >>>print 'he\'s a boy.' >>>print 'I\'m learning\nlinux.' >>>print '\\\n\\' 截图: 如果字符串里面有很多字符都需要转义,就需要加很多 \ ,为

【Swift学习】Swift编程之旅---字符与字符串(五)

String是swift的字符串类型.一个字符串是一个有效的字符序列,因此还可以使字符集合表示.通过+符号可以连接字符串. String 类型是一种快速.现代化的字符串实现.每一个字符串都是由独立编码的 Unicode 字符组成,并提供了用于访问这些字符在不同Unicode表示的支持.使用""来标示字符串. 一.初始化空字符串 var emptyString = "" var anotherEmptyString = String() 这2种初始化方法是等价的. i

Swift 字符于字符串

Swift 的 String 和 Character 类型??供了一个快速的,兼容 Unicode 的方式来处理代码 字符串常量 let strTest = "I'm Swift" 字符串空值判断 let emptyString = "" if emptyString.isEmpty { 2. println("Nothing to see here") 3. } 字符串可变性.字符串的可变性是通过var还是let来确定的.var表示是可变字符串

swift学习笔记(三)关于拷贝和引用

在swift提供的基本数据类型中,包括Int ,Float,Double,String,Enumeration,Structure,Dictionary都属于值拷贝类型. 闭包和函数同属引用类型 捕获则为拷贝.捕获即定义这些常量和变量的原作用域已不存在,闭包仍然可以在闭包函数体内引用和修改这些值 class属于引用类型. Array的情况稍微复杂一些,下面主要对集合类型进行分析: 一.关于Dictionary:无论何时将一个字典实例赋给一个常量,或者传递给一个函数方法时,在赋值或调用发生时,都会