初始化空字符串

为了构造一个很长的字符串,可以创建一个空字符串作为初始值。可以将空的字符串字面量赋值给变量,也可以初始化一个新的String 实例:

  1. var emptyString = "" // 空字符串字面量
  2. var anotherEmptyString = String() // 初始化 String 实例
  3. // 两个字符串均为空并等价。

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

  1. if emptyString.isEmpty {
  2. println("什么都没有")
  3. }
  4. // 打印输出:"什么都没有"

字符串可变性

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

  1. var variableString = "Horse"
  2. variableString += " and carriage" // variableString 现在为 "Horse and carriage"
  3. let constantString = "Highlander"
  4. constantString += " and another Highlander" // 这会报告一个编译错误(compile-time error) - 常量不可以被修改。

注意:在 Objective-C 和 Cocoa 中,您通过选择两个不同的类( NSString 和 NSMutableString )来指定该字符串是否可以被修改,Swift中的字符串是否可以修改仅通过定义的是变量还是常量来决定,实现了多种类型可变性操作的统一。

字符串是值类型

Swift 的 String 类型是值类型。如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值。值类型在 Structures and Enumerations Are Value Types 中进行了说明。

注意:其 Cocoa 中的 NSString 不同,当您在 Cocoa 中创建了一个 NSString 实例,并将其传递给一个函数/方法,或者赋值给一个变量,您永远都是传递或赋值同一个 NSString 实例的一个引用。除非您特别要求其进行值拷贝,否则字符串不会进行赋值新副本操作。

Swift 默认字符串拷贝的方式保证了在函数/方法中传递的是字符串的值,其明确了无论该值来自于哪里,都是您独自拥有的。您可以放心您传递的字符串本身不会被更改。

在实际编译时,Swift编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着您始终可以将字符串作为值类型的同时获得极高的性能。

使用字符(Characters)

Swift 的 String 类型表示特定序列的字符值的集合。每一个字符值代表一个 Unicode 字符。您可利用 for-in 循环来遍历字符串中的每一个字符:

  1. for character in "Dog!" {
  2. println(character)
  3. }
  4. // D
  5. // o
  6. // g
  7. // !

for-in 循环在For Loops中进行了详细描述。

另外,通过标明一个 Character 类型注解并通过字符字面量进行赋值,可以建立一个独立的字符常量或变量:

  1. let yenSign: Character = "¥"

计算字符数量

通过调用全局 countElements 函数并将字符串作为参数进行传递可以获取该字符串的字符数量。

  1. let unusualMenagerie = "Koala

swift String相关推荐

  1. Swift ——String 与 Array

    Swift --String 与 Array 1. String 1.1 String 在内存中的存储 1.2 String.index 2. Array 2.1 Array 的内存结构 2.2 ar ...

  2. Swift String常用方法

    参考Java String类, 对Swift String用法做个总结. 基础篇: 1. 字符串长度: 3种方法. let str = "12345678" let len1 = ...

  3. swift string转int_Swift进阶二:基本数据类型相关

    变量和常量 Swift中,使用关键字let来声明常量,使用关键字var来声明变量. 而在Objective-C中,如果没有特殊的指明,我们所声明的都是变量.可以通过如下几种方式来声明常量: 使用宏定义 ...

  4. Swift String字符串版本更新特性

    var str = "Hello, playground" 字符串,Swift最基本最常用的对象之一. Swift的基本使用,增删改查我们就不说了. 基本字面量 let hello ...

  5. swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)

    在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...

  6. Swift - String 还是NSString

    既然像String 这样的类型和Foundation 对应的类时可以无缝转换的,那么我们在使用和选择的时候,有没有什么需要特别注意的呢? 简单来说,没有需要特别注意的,但还是尽可能使用原生的Strin ...

  7. swift string,Int,Double相互转换

    import UIKitvar str = "Hello, playground" // 1 字符串转Int Double Float var str1 = "818&q ...

  8. Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

    Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4  函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...

  9. Swift 中的Closures(闭包)详解

    Swift 中的Closures(闭包)详解 在Swift没有发布之前,所有人使用OC语言编写Cocoa上的程序,而其中经常被人们讨论的其中之一 -- Block 一直备受大家的喜爱.在Swift中, ...

最新文章

  1. SECTIONS bss段初始化分析
  2. 网络通信基础知识普及篇
  3. OpenCV重新映射Remap的实例(附完整代码)
  4. 下一代Android或官方支持“App2sd”
  5. uiautomator的坑和AAPT命令方式启动一个应用程序
  6. Oracle11.2.0.4 RAC安装文档
  7. python3字符串属性(二)
  8. 一般图最大匹配(UOJ-79)
  9. Package vim is not available, but is referred to by another package.
  10. RHEL4As RAC手记
  11. shell 中的expect 用法
  12. Oracle 11g完全卸载(Windows)
  13. Razor的主版页面框架
  14. 浅谈SQL注入攻击与防御(适用于小白观看)
  15. HTTP 状态码大全
  16. Wider Face数据集详解
  17. java 一元二次方程_java一元二次方程求根
  18. 2019川大计算机在福建录取分数线,电子科技大学录取分数线2019(在各省市录取数据)...
  19. Jupyter Notebook 工作环境配置
  20. 辽宁大连IPv6高校

热门文章

  1. 易生信高级转录组分析和数据可视化-最后一天报名
  2. Cell重磅发布15万人体微生物基因组!超大规模宏基因组研究揭示数千计人体微生物新物种...
  3. 丰度决定了细菌在复杂群落中的功能作用
  4. R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)
  5. R语言ggplot2可视化2d密度图:可视化二维密度图并将两个二维密度图重叠起来、Overlay two ggplot2 stat_density2d plots
  6. R计算贝叶斯信息指标(Bayesian Information Criterion,BIC)实战
  7. Python读取多个excel文件(删除字段、数据格式转换、dataframe多表合并)并写入ElasticSearch实战(自动创建索引、写入ElasticSearch、探索性数据分析)
  8. 偏依赖图(Partial Dependence Plots)是什么?排列重要性(Permutaion Importance)是什么?如何解读?有什么意义?
  9. java中getDelta是什么意思_Java IResourceDelta.getMarkerDeltas方法代码示例
  10. java drools5_Java Drools5.1 规则流基础【示例】