swift String
初始化空字符串
为了构造一个很长的字符串,可以创建一个空字符串作为初始值。可以将空的字符串字面量赋值给变量,也可以初始化一个新的String 实例:
- var emptyString = "" // 空字符串字面量
- var anotherEmptyString = String() // 初始化 String 实例
- // 两个字符串均为空并等价。
您可以通过检查其 Boolean 类型的 isEmpty 属性来判断该字符串是否为空:
- if emptyString.isEmpty {
- println("什么都没有")
- }
- // 打印输出:"什么都没有"
字符串可变性
您可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改:
- var variableString = "Horse"
- variableString += " and carriage" // variableString 现在为 "Horse and carriage"
- let constantString = "Highlander"
- 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 循环来遍历字符串中的每一个字符:
- for character in "Dog!" {
- println(character)
- }
- // D
- // o
- // g
- // !
for-in 循环在For Loops中进行了详细描述。
另外,通过标明一个 Character 类型注解并通过字符字面量进行赋值,可以建立一个独立的字符常量或变量:
- let yenSign: Character = "¥"
计算字符数量
通过调用全局 countElements 函数并将字符串作为参数进行传递可以获取该字符串的字符数量。
- let unusualMenagerie = "Koala
swift String相关推荐
- Swift ——String 与 Array
Swift --String 与 Array 1. String 1.1 String 在内存中的存储 1.2 String.index 2. Array 2.1 Array 的内存结构 2.2 ar ...
- Swift String常用方法
参考Java String类, 对Swift String用法做个总结. 基础篇: 1. 字符串长度: 3种方法. let str = "12345678" let len1 = ...
- swift string转int_Swift进阶二:基本数据类型相关
变量和常量 Swift中,使用关键字let来声明常量,使用关键字var来声明变量. 而在Objective-C中,如果没有特殊的指明,我们所声明的都是变量.可以通过如下几种方式来声明常量: 使用宏定义 ...
- Swift String字符串版本更新特性
var str = "Hello, playground" 字符串,Swift最基本最常用的对象之一. Swift的基本使用,增删改查我们就不说了. 基本字面量 let hello ...
- swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)
在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...
- Swift - String 还是NSString
既然像String 这样的类型和Foundation 对应的类时可以无缝转换的,那么我们在使用和选择的时候,有没有什么需要特别注意的呢? 简单来说,没有需要特别注意的,但还是尽可能使用原生的Strin ...
- swift string,Int,Double相互转换
import UIKitvar str = "Hello, playground" // 1 字符串转Int Double Float var str1 = "818&q ...
- Swift 1.1语言函数参数的特殊情况本地参数名外部参数名
Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4 函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...
- Swift 中的Closures(闭包)详解
Swift 中的Closures(闭包)详解 在Swift没有发布之前,所有人使用OC语言编写Cocoa上的程序,而其中经常被人们讨论的其中之一 -- Block 一直备受大家的喜爱.在Swift中, ...
最新文章
- SECTIONS bss段初始化分析
- 网络通信基础知识普及篇
- OpenCV重新映射Remap的实例(附完整代码)
- 下一代Android或官方支持“App2sd”
- uiautomator的坑和AAPT命令方式启动一个应用程序
- Oracle11.2.0.4 RAC安装文档
- python3字符串属性(二)
- 一般图最大匹配(UOJ-79)
- Package vim is not available, but is referred to by another package.
- RHEL4As RAC手记
- shell 中的expect 用法
- Oracle 11g完全卸载(Windows)
- Razor的主版页面框架
- 浅谈SQL注入攻击与防御(适用于小白观看)
- HTTP 状态码大全
- Wider Face数据集详解
- java 一元二次方程_java一元二次方程求根
- 2019川大计算机在福建录取分数线,电子科技大学录取分数线2019(在各省市录取数据)...
- Jupyter Notebook 工作环境配置
- 辽宁大连IPv6高校
热门文章
- 易生信高级转录组分析和数据可视化-最后一天报名
- Cell重磅发布15万人体微生物基因组!超大规模宏基因组研究揭示数千计人体微生物新物种...
- 丰度决定了细菌在复杂群落中的功能作用
- R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)
- R语言ggplot2可视化2d密度图:可视化二维密度图并将两个二维密度图重叠起来、Overlay two ggplot2 stat_density2d plots
- R计算贝叶斯信息指标(Bayesian Information Criterion,BIC)实战
- Python读取多个excel文件(删除字段、数据格式转换、dataframe多表合并)并写入ElasticSearch实战(自动创建索引、写入ElasticSearch、探索性数据分析)
- 偏依赖图(Partial Dependence Plots)是什么?排列重要性(Permutaion Importance)是什么?如何解读?有什么意义?
- java中getDelta是什么意思_Java IResourceDelta.getMarkerDeltas方法代码示例
- java drools5_Java Drools5.1 规则流基础【示例】