字符串和字符

苹果要是不提供了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上看的)

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

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

    基本了解了变量的创建和基础数据类型,但是在开发中用得最多的还是字符串.那什么是字符串呢? Swift 的String类型表示特定序列的Character(字符) 类型值的集合,它是值类型具有可变性 S ...

  2. 嵌入式Linux学习笔记(三) 字符型设备驱动--LED的驱动开发

    在成功构建了一个能够运行在开发板平台的系统后,下一步就要正式开始应用的开发(这里前提是有一定的C语言基础,对ARM体系的软/硬件,这部分有疑问可能要参考其它教程),根据需求仔细分解任务,可以发现包含的 ...

  3. Java初学者笔记三:关于字符串和自实现数组常见操作以及异常处理

    一.字符串常见的操作 1.结合我在python中对于字符串常见处理总结出下面三个应该能算是字符串造作的TOP 3 //字符串查找子串,存在返回index,不存在返回-1 等于python的find: ...

  4. [精校版]The Swift Programming Language--语言指南--字符串和字符 (转)

    今天装了10.10.马上就可以实际编写swift了.还是很兴奋啊. 哈哈.字符串和字符是大家最容易打交道的.今天就转一下讲解swift中字符串和字符的文章.希望对大家有帮助. 原文地址:http:// ...

  5. C# LINQ学习笔记三:LINQ to OBJECT之操作字符串

    本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5814204.html,记录一下学习过程以备后续查用. 一.统计单词在字符串中出现的次数 请注意,若要执行计数, ...

  6. Swift字符与字符串

    学习来自<极客学院:Swift中的字符串和集合> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 import Foundation /**** ...

  7. Java读书笔记三(字符串)

    1.介绍 本篇博客将对JAVA中的字符串类的基本知识进行介绍.主要字符串类的一些经常用法等内容. 2.字符串对象的创建 1.有两种形式.可是在开发中常常习惯于String 变量名的形式来进行操作. & ...

  8. 从0开始学Swift笔记整理(二)

    这是跟在上一篇博文后续内容: --函数中参数的传递引用 类是引用类型,其他的数据类型如整型.浮点型.布尔型.字符.字符串.元组.集合.枚举和结构体全部是值类型. 有的时候就是要将一个值类型参数以引用方 ...

  9. Core Java 总结(字符和字符串类问题)

    所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ...

随机推荐

  1. BZOJ 3211 弗洛拉前往国家 树阵+并检查集合

    标题效果:给定一个序列,它提供了以下操作: 1.将[l.r]每个号码间隔a[i]变sqrt(a[i]) 2.查询[l,r]间隔和 剧烈的变化不支持由间隔,因此,我们选择单 - 点更换间隔查询的树阵,但 ...

  2. MIPS平台目标机安装Oprofile时出现error

    在Debian下安装Oprofile 重要:应该使linux内核选项支持 在 .config 文件中设置CONFIG_PROFILING=y和CONFIG_OPROFILE=y. 重新编译,烧写.使用 ...

  3. 指尖上的电商---(12)SolrAdmin中加入多核的还有一种方法

    这一节中我们演示下solr中创建多核的还有一种方法. 接第10讲,首先关闭tomcatserver 1.解压solr-4.8.0后,找到solr-4.8.0以下的example目录下的multicor ...

  4. vim高级编辑(一)

    本文出自   http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...

  5. Maven 建 Struts2 基本实现 CURD Controller

    开发环境 开发工具:Eclipse 数据库:MySQL server:Tomcat Struts2 请求原理流程图 构建一个 web maven project,在pom.xml引入struts2的j ...

  6. 14.3.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁

    14.3.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁 这个章节建立关于死锁的概念信息,它解释如何组织数据库操作来减少死锁和随后的错误处理: D ...

  7. Oracle控制文件操作

    控制文件是连接instance和 database的纽带.记录了database的结构信息. 控制文件是1个2进制文件.记录的是当前database的状态. 控制文件可以有多个,在参数文件中通过con ...

  8. Unity3D游戏开发之开发游戏带来的问题

    昨日曾就某投资人把移动团队失败原因之中的一个归于选择Unity引擎进行了一番评论,工具本身无罪,但怎样理解工具.正确使用Unity引擎确实须要讨论,在选择Unity之前你也许须要了解下这个引擎实际开发 ...

  9. 英文版Ubuntu安装Fcitx输入法

    在英文环境(LC_CTYPE=en_US.UTF-8)下安装,可按如下配置: 首先,执行 sudo apt-get install fcitx-pinyin im-switch 然后,执行 im-sw ...

  10. [Xcode]使用target进行协同开发

    协同开发时候发现难免会因为某些条件宏导致上传到SVN的代码影响到其他同时,但是每一次去修很多条件编译也不是很方便,所以可以通过新建自己的target来控制product. 一.创建自己的target: ...